#include <bits/stdc++.h>
using namespace std;
const int MAXN = 7010;
class queueNode {
 public:
  char c;
  int index;
  queueNode(char iC = ' ', int iIndex = 0) {
    c = iC;
    index = iIndex;
  }
};
int a[MAXN], b[MAXN];
int s1[MAXN], s2[MAXN];
int count1[MAXN], count2[MAXN];
int n, s1N, s2N;
string trans(int state) {
  if (state == 0)
    return "Loop";
  else if (state == 1)
    return "Win";
  else if (state == -1)
    return "Lose";
}
int main() {
  char c;
  int index, preIndex, state;
  memset(a, 0, sizeof(a));
  memset(b, 0, sizeof(b));
  memset(count1, 0, sizeof(count1));
  memset(count2, 0, sizeof(count2));
  a[1] = -1;
  b[1] = -1;
  int n;
  scanf("%d", &n);
  scanf("%d", &s1N);
  for (int i = 0; i < s1N; i++) scanf("%d", &s1[i]);
  scanf("%d", &s2N);
  for (int i = 0; i < s2N; i++) scanf("%d", &s2[i]);
  queue<queueNode> q;
  q.push(queueNode('a', 1));
  q.push(queueNode('b', 1));
  while (!q.empty()) {
    c = q.front().c;
    index = q.front().index;
    q.pop();
    if (c == 'a') {
      state = a[index];
      if (state == -1) {
        for (int i = 0; i < s1N; i++) {
          preIndex = index - s1[i];
          if (preIndex <= 0) preIndex += n;
          if (b[preIndex] == 0) {
            b[preIndex] = 1;
            q.push(queueNode('b', preIndex));
          }
        }
      } else if (state == 1) {
        for (int i = 0; i < s1N; i++) {
          preIndex = index - s1[i];
          if (preIndex <= 0) preIndex += n;
          count2[preIndex]++;
          if (count2[preIndex] == s1N) {
            b[preIndex] = -1;
            q.push(queueNode('b', preIndex));
          }
        }
      }
    } else {
      state = b[index];
      if (state == -1) {
        for (int i = 0; i < s2N; i++) {
          preIndex = index - s2[i];
          if (preIndex <= 0) preIndex += n;
          if (a[preIndex] == 0) {
            a[preIndex] = 1;
            q.push(queueNode('a', preIndex));
          }
        }
      } else if (state == 1) {
        for (int i = 0; i < s2N; i++) {
          preIndex = index - s2[i];
          if (preIndex <= 0) preIndex += n;
          count1[preIndex]++;
          if (count1[preIndex] == s2N) {
            a[preIndex] = -1;
            q.push(queueNode('a', preIndex));
          }
        }
      }
    }
  }
  for (int i = 2; i < n; i++) {
    if (b[i] == 0)
      printf("Loop ");
    else if (b[i] == 1)
      printf("Win ");
    else if (b[i] == -1)
      printf("Lose ");
  }
  if (b[n] == 0)
    printf("Loop\n");
  else if (b[n] == 1)
    printf("Win\n");
  else if (b[n] == -1)
    printf("Lose\n");
  for (int i = 2; i < n; i++) {
    if (a[i] == 0)
      printf("Loop ");
    else if (a[i] == 1)
      printf("Win ");
    else if (a[i] == -1)
      printf("Lose ");
  }
  if (a[n] == 0)
    printf("Loop\n");
  else if (a[n] == 1)
    printf("Win\n");
  else if (a[n] == -1)
    printf("Lose\n");
  return 0;
}
