pages.filterNot { it.isValid() } .map { line -> fun order(sorted: List, left: List): List { if (left.isEmpty()) return sorted val next = left.find { n -> order.none { (a, b) -> b == n && a in left } }!! return order(sorted + next, left - next) } order(emptyList(), line) }.sumOf { it[it.size / 2].toInt() }