#include <bits/stdc++.h>
using namespace std;
const int maxn = 7e3 + 10;
struct node {
  int pos, who, final;
};
int n, k[3], s[3][maxn], num[maxn][3], f[maxn][3];
bool vis[maxn][3];
int main() {
  cin >> n;
  cin >> k[1];
  for (int i = 1; i <= k[1]; i++) scanf("%d", &s[1][i]);
  cin >> k[2];
  for (int i = 1; i <= k[2]; i++) scanf("%d", &s[2][i]);
  f[0][1] = f[0][2] = 2;
  queue<node> Q;
  Q.push((node){0, 1, 2});
  vis[0][1] = 1;
  Q.push((node){0, 2, 2});
  vis[0][2] = 1;
  while (!Q.empty()) {
    node nd = Q.front();
    Q.pop();
    if (nd.final == 2) {
      int o = 3 - nd.who;
      for (int i = 1; i <= k[o]; i++) {
        int pos = (nd.pos - s[o][i] + n) % n;
        if (!vis[pos][o]) {
          f[pos][o] = 1;
          Q.push((node){pos, o, 1});
          vis[pos][o] = 1;
        }
      }
    } else {
      int o = 3 - nd.who;
      for (int i = 1; i <= k[o]; i++) {
        int pos = (nd.pos - s[o][i] + n) % n;
        num[pos][o]++;
        if (!vis[pos][o] && num[pos][o] == k[o]) {
          f[pos][o] = 2;
          Q.push((node){pos, o, 2});
          vis[pos][o] = 1;
        }
      }
    }
  }
  for (int i = 1; i < n; i++)
    if (f[i][1] == 1)
      printf("Win ");
    else if (f[i][1] == 2)
      printf("Lose ");
    else
      printf("Loop ");
  cout << endl;
  for (int i = 1; i < n; i++)
    if (f[i][2] == 1)
      printf("Win ");
    else if (f[i][2] == 2)
      printf("Lose ");
    else
      printf("Loop ");
  return 0;
}
