fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) fun findPrimes n = let fun isPrime i = let fun test_loop j = if i < j * j then true else if i mod j = 0 then false else test_loop (j + 1) in test_loop 2 end fun collect current = if n < current then [] else if isPrime current then current :: collect (current + 1) else collect (current + 1) in collect 2 end val () = let val n = readInt () val primes = findPrimes n val dp = Array.array (n + 1, false) fun doDp i = if n < i then ignore () else ( if List.exists (fn p => if i < p then false else Array.sub (dp, i - p) = false) primes then Array.update (dp, i, true) else Array.update (dp, i, false); doDp (i + 1) ) in ( Array.update (dp, 0, true); Array.update (dp, 1, true); doDp 2; if Array.sub (dp, n) = true then print "Win\n" else print "Lose\n" ) end