#include <bits/stdc++.h>
using namespace std;
const int NMAX = 7e3 + 5;
const int WIN = 1;
const int LOSE = -1;
int n, k1, k2;
int rick[NMAX], morty[NMAX];
int rickDegree[NMAX], mortyDegree[NMAX];
bool rickMarks[NMAX], mortyMarks[NMAX];
int rickResult[NMAX], mortyResult[NMAX];
struct event {
  bool isRick;
  int type, position;
};
queue<event> que;
void clearMarks() {
  for (int i = 2; i <= n; i++) {
    rickMarks[i] = false;
    mortyMarks[i] = false;
  }
}
int cw(int now, int k) {
  if ((now + k) % n == 0) {
    return n;
  } else {
    return (now + k) % n;
  }
}
int ccw(int now, int k) {
  if ((now - k) % n <= 0) {
    return (now - k) % n + n;
  } else {
    return (now - k) % n;
  }
}
void init() {
  cin >> n;
  cin >> k1;
  for (int i = 0; i < k1; i++) {
    cin >> rick[i];
  }
  cin >> k2;
  for (int i = 0; i < k2; i++) {
    cin >> morty[i];
  }
  for (int i = 2; i <= n; i++) {
    rickDegree[i] = k1;
    mortyDegree[i] = k2;
  }
}
void solve() {
  rickResult[1] = LOSE;
  mortyResult[1] = LOSE;
  rickMarks[1] = true;
  mortyMarks[1] = true;
  que.push({true, LOSE, 1});
  que.push({false, LOSE, 1});
  while (!que.empty()) {
    event e = que.front();
    que.pop();
    if (e.isRick) {
      rickMarks[e.position] = true;
      if (e.type == LOSE) {
        for (int i = 0; i < k2; i++) {
          int prev = ccw(e.position, morty[i]);
          if (!mortyMarks[prev]) {
            mortyResult[prev] = WIN;
            que.push({false, WIN, prev});
          }
        }
      } else {
        for (int i = 0; i < k2; i++) {
          int prev = ccw(e.position, morty[i]);
          mortyDegree[prev]--;
          if (mortyDegree[prev] == 0 && !mortyMarks[prev]) {
            mortyResult[prev] = LOSE;
            que.push({false, LOSE, prev});
          }
        }
      }
    } else {
      mortyMarks[e.position] = true;
      if (e.type == LOSE) {
        for (int i = 0; i < k1; i++) {
          int prev = ccw(e.position, rick[i]);
          if (!rickMarks[prev]) {
            rickResult[prev] = WIN;
            que.push({true, WIN, prev});
          }
        }
      } else {
        for (int i = 0; i < k1; i++) {
          int prev = ccw(e.position, rick[i]);
          rickDegree[prev]--;
          if (rickDegree[prev] == 0 && !rickMarks[prev]) {
            rickResult[prev] = LOSE;
            que.push({true, LOSE, prev});
          }
        }
      }
    }
  }
}
void printResult() {
  for (int i = 2; i <= n; i++) {
    if (rickResult[i] == WIN) {
      cout << "Win ";
    } else if (rickResult[i] == LOSE) {
      cout << "Lose ";
    } else {
      cout << "Loop ";
    }
  }
  cout << endl;
  for (int i = 2; i <= n; i++) {
    if (mortyResult[i] == WIN) {
      cout << "Win ";
    } else if (mortyResult[i] == LOSE) {
      cout << "Lose ";
    } else {
      cout << "Loop ";
    }
  }
}
int main() {
  init();
  solve();
  printResult();
  return 0;
}
