func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MaxN = 14050;   template <class t>   inline void read(t &s) {     s = 0;     register int f = 1;     register char c = getchar();     while (!isdigit(c)) {       if (c ==  - ) f = -1;       c = getchar();     }     while (isdigit(c)) s = (s << 3) + (s << 1) + (c ^ 48), c = getchar();     s *= f;     return;   }   template <class t, class... A>   inline void read(t &x, A &...a) {     read(x);     read(a...);   }   template <class t>   inline void write(t x) {     if (x < 0) putchar( - ), x = -x;     int buf[21], top = 0;     while (x) buf[++top] = x % 10, x /= 10;     if (!top) buf[++top] = 0;     while (top) putchar(buf[top--] ^  0 );     return;   }   inline void setIn(string s) {     freopen(s.c_str(),  r , stdin);     return;   }   inline void setOut(string s) {     freopen(s.c_str(),  w , stdout);     return;   }   inline void setIO(string s =   ) {     setIn(s +  .in );     setOut(s +  .out );     return;   }   template <class t>   inline bool checkmin(t &x, t y) {     if (x > y) {       x = y;       return 1;     }     return 0;   }   template <class t>   inline bool checkmax(t &x, t y) {     if (x < y) {       x = y;       return 1;     }     return 0;   }   inline int lowbit(int x) { return x & (-x); }   int s[2][MaxN], m[2];   int n;   bool vis[2][MaxN], win[2][MaxN];   int cnt[2][MaxN];   inline void dfs(int k, int u) {     if (!win[k][u])       for (int i = 1; i <= m[k ^ 1]; ++i) {         register int nxt = (u - s[k ^ 1][i] - 1 + n) % n + 1;         if (!vis[k ^ 1][nxt])           win[k ^ 1][nxt] = vis[k ^ 1][nxt] = true, dfs(k ^ 1, nxt);       }     else       for (int i = 1; i <= m[k ^ 1]; ++i) {         register int nxt = (u - s[k ^ 1][i] - 1 + n) % n + 1;         if (!vis[k ^ 1][nxt] && ++cnt[k ^ 1][nxt] >= m[k ^ 1])           vis[k ^ 1][nxt] = true, dfs(k ^ 1, nxt);       }     return;   }   signed main(void) {     read(n);     read(m[0]);     for (int i = 1; i <= m[0]; ++i) read(s[0][i]);     read(m[1]);     for (int i = 1; i <= m[1]; ++i) read(s[1][i]);     vis[0][1] = vis[1][1] = true;     dfs(1, 1);     dfs(0, 1);     for (int i = 0; i < 2; ++i, puts(  ))       for (int j = 2; j <= n; ++j)         printf( %s  , (vis[i][j] ? (win[i][j] ?  Win  :  Lose ) :  Loop ));     return 0;   }   