#include <bits/stdc++.h>
using namespace std;
int n, m;
set<int> xs[2];
int graph[7007][2];
int loss_times[7007][2];
void readXs(set<int>& st) {
  int k, a;
  scanf("%d", &k);
  for (int j = 0; j < k; j++) {
    scanf("%d", &a);
    st.insert(a);
  }
}
void look(int nd, int turn) {
  int u = graph[nd][turn];
  for (set<int>::iterator it = xs[!turn].begin(); it != xs[!turn].end(); it++) {
    int step = (*it);
    int v = (nd - step);
    if (v <= 0) v += n;
    if (v == 1) continue;
    if (u == 0) {
      if (graph[v][!turn] == 1) continue;
      graph[v][!turn] = 1;
      look(v, !turn);
    } else if (u == 1) {
      if ((++loss_times[v][!turn]) != (int)xs[!turn].size()) continue;
      graph[v][!turn] = 0;
      look(v, !turn);
    }
  }
}
void solve(int state) {
  for (int i = 2; i <= n; i++) {
    int ans = graph[i][state];
    if (ans == 0) {
      printf("Lose ");
    } else if (ans == 1) {
      printf("Win ");
    } else {
      printf("Loop ");
    }
  }
}
int main() {
  scanf("%d", &n);
  memset(loss_times, 0, sizeof(loss_times));
  memset(graph, -1, sizeof(graph));
  readXs(xs[0]);
  readXs(xs[1]);
  graph[1][0] = 0;
  graph[1][1] = 0;
  look(1, 1);
  look(1, 0);
  solve(0);
  printf("\n");
  solve(1);
  return 0;
}
