#include <bits/stdc++.h>
using namespace std;
const int N = 1e6;
vector<short> e[N];
int n, k1, k2, a[N], b[N], vs[N], sg[N], nm[N], tj[N], rd[N];
queue<int> q;
void adde(int x, int y) { e[x].push_back(y); }
vector<short> emt() {
  vector<short> a;
  return a;
}
int main() {
  scanf("%d", &n);
  scanf("%d", &k1);
  for (int i = 1; i <= k1; i++) scanf("%d", &a[i]);
  scanf("%d", &k2);
  for (int i = 1; i <= k2; i++) scanf("%d", &b[i]);
  for (int i = 1; i <= n; i++) {
    if (i == 1) continue;
    for (int j = 1; j <= k1; j++) rd[i]++;
    for (int j = 1; j <= k2; j++) rd[i + n]++;
  }
  q.push(1), q.push(n + 1);
  sg[1] = sg[n + 1] = 0;
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    vs[u] = 1;
    if (u <= n)
      for (int i = 1; i <= k2; i++) adde(u, (u - b[i] - 1 + n * 2) % n + 1 + n);
    else
      for (int i = 1; i <= k1; i++) adde(u, (u - a[i] - 1 + n) % n + 1);
    for (int i = 0; i < e[u].size(); i++) {
      int v = e[u][i];
      if (vs[v]) continue;
      tj[v]++;
      if (sg[u]) {
        nm[v]++;
        if (tj[v] == rd[v]) sg[v] = nm[v] != rd[v], vs[v] = 1, q.push(v);
      } else
        sg[v] = 1, vs[v] = 1, q.push(v);
    }
    vector<short> aa = emt();
    swap(e[u], aa);
  }
  for (int i = 2; i <= n; i++)
    printf("%s ", vs[i] ? (sg[i] ? "Win" : "Lose") : "Loop");
  printf("\n");
  for (int i = n + 2; i <= n * 2; i++)
    printf("%s ", vs[i] ? (sg[i] ? "Win" : "Lose") : "Loop");
  printf("\n");
}
