fun main(args: Array){ val num = readLine()!!.toInt() primeList = getPrimeList(num) val ans = if(canWin(num)) "Win" else "Lose" println(ans) } var primeList = listOf() val dic = mutableMapOf() fun canWin(num:Int): Boolean { if(num in (2..3)) { return false } dic[num]?.let { return it } var ret = false primeList.filter { it < num - 1 }.forEach{ if(!canWin(num-it)) { ret = true } } dic[num] = ret return ret } fun getPrimeList(maxNum:Int):List { val flags = arrayOfNulls(maxNum+1) val list = mutableListOf() for (i in 2..maxNum) { if(flags[i] != null && flags[i]!!) { continue } val maxIndex = maxNum/i for(j in 1..maxIndex) { flags[i*j] = true } list.add(i) } return list.toList() }