#include <bits/stdc++.h>
using namespace std;
int n, f[7005][2], a[7005], na, b[7005], nb, num[2][7005];
struct node {
  int pos, op, ty;
};
void bfs() {
  queue<node> q;
  q.push((node){1, 0, 2});
  q.push((node){1, 1, 2});
  f[1][0] = f[1][1] = 2;
  num[0][1] = num[1][1] = 1e9;
  while (!q.empty()) {
    node now = q.front();
    q.pop();
    if (!now.op) {
      for (int i = 1; i <= nb; ++i) {
        int ne = (now.pos + n - b[i]) % n;
        if (!ne) ne = n;
        if (now.ty == 2) {
          if (!f[ne][1]) q.push((node){ne, 1, 1});
          f[ne][1] = 1;
        } else {
          num[1][ne]++;
          if (num[1][ne] == nb) {
            f[ne][1] = 2;
            q.push((node){ne, 1, 2});
          }
        }
      }
    } else {
      for (int i = 1; i <= na; ++i) {
        int ne = (now.pos + n - a[i]) % n;
        if (!ne) ne = n;
        if (now.ty == 2) {
          if (!f[ne][0]) q.push((node){ne, 0, 1});
          f[ne][0] = 1;
        } else {
          num[0][ne]++;
          if (num[0][ne] == na) {
            f[ne][0] = 2;
            q.push((node){ne, 0, 2});
          }
        }
      }
    }
  }
}
int main() {
  scanf("%d", &n);
  scanf("%d", &na);
  for (int i = 1; i <= na; ++i) scanf("%d", &a[i]);
  scanf("%d", &nb);
  for (int i = 1; i <= nb; ++i) scanf("%d", &b[i]);
  bfs();
  for (int i = 2; i <= n; ++i) {
    if (f[i][0] == 1)
      printf("Win ");
    else if (f[i][0] == 2)
      printf("Lose ");
    else
      printf("Loop ");
  }
  printf("\n");
  for (int i = 2; i <= n; ++i) {
    if (f[i][1] == 1)
      printf("Win ");
    else if (f[i][1] == 2)
      printf("Lose ");
    else
      printf("Loop ");
  }
  printf("\n");
  return 0;
}
