fun main(arr:Array) { val susiCount = readLine()!!.toInt() susiList.addAll(readLine()!!.split(" ").map { it.toInt() }) val ans = getAns(0, 0) println(ans) } val susiList = mutableListOf() val dic = mutableMapOf>() fun getAns(idx:Int, subTotal:Int):Int { if (idx >= susiList.size) { return subTotal } if(!dic.containsKey(idx)) { dic[idx] = mutableMapOf() } dic[idx]!![subTotal]?.let { return it } var ans = getAns(idx + 2, subTotal + susiList[idx]) ans = Math.max(getAns(idx + 1, subTotal), ans) dic[idx]!![subTotal] = ans return ans }