import kotlin.math.max fun getTargetCalories(upper: Int, buckets: List): Int { val deq = mutableListOf>() deq.add(Pair(0, 0)) var res = -1; while (deq.isNotEmpty()) { val (cal, index) = deq.removeLast() if (index == buckets.size) { res = max(res, cal) continue } val new0 = cal val new1 = cal + buckets[index] deq.add(Pair(new0, index + 1)) if (new1 <= upper) { deq.add(Pair(new1, index + 1)) } } return res } fun main() { val (upperCalories: Int, _) = readln().split(' ').map { i -> i.toInt() } val buckets: List = readln().split(' ').map { i -> i.toInt() } println(getTargetCalories(upperCalories, buckets)) }