#include using namespace std; struct cww{cww(){ios::sync_with_stdio(false);cin.tie(0);}}star; int N; vector P; vector> visit( 10001, vector(10001, -1 ) );//<---初期化!!! void prime( int N ) { for( int i = 2; i <= N; i++ ) { bool flag = true; for( int j = 2; j * j <= i; j++ ) { if( i % j == 0 ) { flag = false; break; } } if( flag ) { P.emplace_back( i ); } } reverse( P.begin(), P.end() ); } bool dfs( const int T, const int N ) { //0 か 1 を受け取ったのが先手番だったらtrueを返す( = Win ) if( N == 0 || N == 1 ) { return T == 0 ? 1 : 0; } //visit が 0 以上だったら訪問済 if( visit[ T ][ N ] >= 0 ) { //記録を返す return visit[ T ][ N ]; } if ( T == 0 ) { for( const auto &x : P ) { if( N - x >= 0 ) { //T, N に対しての戻り値を記憶 visit[ T ][ N ] = dfs( 1, N - x ); //先手勝ち(1/true)が1つでもあれば先手勝ち(true) if( visit[ T ][ N ] ) return 1; } } return 0; } else { for( const auto &x : P ) { if( N - x >= 0 ) { //T, N に対しての戻り値を記憶 visit[ T ][ N ] = dfs( 0, N - x ); //1つでも負け(0/false)があったら負け(false) if( !visit[ T ][ N ] ) return 0; } } return 1; } } int main() { cin >> N; prime( N ); cout << ( dfs( 0, N ) ? "Win" : "Lose" ) << endl; return 0; }