#include <bits/stdc++.h>
using namespace std;
const int NN = 7070;
vector<int> nxt[2];
int deg[NN][2], ans[NN][2];
struct Node {
  int f, u, c;
  Node(){};
  Node(int u, int f, int c) : u(u), f(f), c(c){};
};
queue<Node> q;
int main() {
  int n;
  cin >> n;
  int k1;
  cin >> k1;
  while (k1--) {
    int x;
    cin >> x;
    nxt[0].push_back(x);
  };
  int k2;
  cin >> k2;
  while (k2--) {
    int x;
    cin >> x;
    nxt[1].push_back(x);
  };
  for (int i = 1; i <= n; i++) deg[i][0] = nxt[0].size();
  for (int i = 1; i <= n; i++) deg[i][1] = nxt[1].size();
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < 2; j++) {
      ans[i][j] = -1;
    }
  }
  ans[1][0] = 0;
  ans[1][1] = 0;
  q.push({1, 0, 0});
  q.push({1, 1, 0});
  while (!q.empty()) {
    Node p = q.front();
    q.pop();
    int f = p.f, c = p.c, u = p.u;
    int F = (f ^ 1);
    if (c) {
      for (int x : nxt[F]) {
        int v = u - x;
        if (v < 1) v += n;
        if (!--deg[v][F] && ans[v][F] == -1) {
          ans[v][F] = 0;
          q.push({v, F, 0});
        }
      }
    } else {
      for (int x : nxt[F]) {
        int v = u - x;
        if (v < 1) v += n;
        if (ans[v][F] == -1) {
          ans[v][F] = 1;
          q.push({v, F, 1});
        }
      }
    }
  }
  for (int j = 0; j < 2; j++) {
    for (int i = 2; i <= n; i++) {
      if (ans[i][j] == -1) printf("Loop ");
      if (ans[i][j] == 0) printf("Lose ");
      if (ans[i][j] == 1) printf("Win ");
    }
    puts("");
  }
  return 0;
}
