import java.util.* fun main(arr:Array) { numCount = readLine()!!.toInt() targetNum = readLine()!!.toInt() numList = readLine()!!.split(" ").map { it.toInt() } val ret = getAns(numList[0], 1) println(ret.Ans) } var numCount = 0 var targetNum = 0 var numList = listOf() val dic = mutableMapOf>() fun getAns(subTotal:Int, idx:Int):Return { if(!dic.containsKey(subTotal)) { dic[subTotal] = mutableMapOf() } dic[subTotal]!![idx]?.let { return it } if(idx >= numCount) { return Return(subTotal, "") } if(subTotal > targetNum) { return Return(subTotal, "-") } val ret1 = getAns(subTotal+numList[idx], idx+1) val ret2 = getAns(subTotal*numList[idx], idx+1) var ret3:Return = Return(0, "-") if(ret1.Total == targetNum) { ret3 = Return(ret1.Total, "+" + ret1.Ans) } else if(ret2.Total == targetNum) { ret3 = Return(ret2.Total, "*" + ret2.Ans) } else { ret3 = Return(ret1.Total, "") } dic[subTotal]!![idx] = ret3 return ret3 } class Return(val Total:Int, val Ans:String)