import Control.Applicative import Data.List import Data.Array sieve' = 2:3:[6*i+j|i<-[1..],j<-[-1,1], isPrime $ 6*i+j] where isPrime n = null [p|p<-takeWhile (\x -> x*x <=n) sieve', rem n p == 0] solve m ps = if solve' m ps then "Win" else "Lose" solve' m ps = iter m ds where ds = [(2,False),(1,True),(0,True)] memo = listArray ((0,m)) $ fmap (\x -> iter x ds) $ [0..m] iter n acc = case lookup n acc of Just k -> k Nothing -> let h = not $ and [memo!(n-p)|p<-takeWhile ( Int) <$> getLine putStrLn $ solve n $ takeWhile (