#include <bits/stdc++.h>
using namespace std;
const int maxn = 7e3 + 20;
int dp[2][maxn], n, T[2][maxn], k[2];
vector<vector<int> > V(2);
int main(void) {
  int k1, k2;
  V[0].reserve(maxn);
  V[1].reserve(maxn);
  cin >> n;
  cin >> k1;
  for (int i = 0; i < k1; i++) cin >> V[0][i];
  cin >> k2;
  for (int i = 0; i < k2; i++) cin >> V[1][i];
  for (int i = 0; i < maxn; i++) T[0][i] = k1, T[1][i] = k2;
  k[0] = k1, k[1] = k2;
  memset(dp, -1, sizeof(dp));
  dp[0][0] = dp[1][0] = 0;
  queue<pair<int, int> > Q;
  Q.push(pair<int, int>(0, 0));
  Q.push(pair<int, int>(1, 0));
  while (!Q.empty()) {
    pair<int, int> p = Q.front();
    Q.pop();
    if (!dp[p.first][p.second]) {
      for (int i = 0; i < k[p.first ^ 1]; i++) {
        int t = V[p.first ^ 1][i];
        int pos = (p.second - t + n) % n;
        if (dp[p.first ^ 1][pos] == -1) {
          dp[p.first ^ 1][pos] = 1;
          Q.push(pair<int, int>(p.first ^ 1, pos));
        }
      }
    } else {
      for (int i = 0; i < k[p.first ^ 1]; i++) {
        int t = V[p.first ^ 1][i];
        int pos = (p.second - t + n) % n;
        T[p.first ^ 1][pos]--;
        if (dp[p.first ^ 1][pos] == -1 && !T[p.first ^ 1][pos]) {
          dp[p.first ^ 1][pos] = 0;
          Q.push(pair<int, int>(p.first ^ 1, pos));
        }
      }
    }
  }
  for (int i = 1; i < n; i++) {
    if (dp[0][i] == 0)
      printf("Lose ");
    else if (dp[0][i] == 1)
      printf("Win ");
    else
      printf("Loop ");
  }
  puts("");
  for (int i = 1; i < n; i++) {
    if (dp[1][i] == 0)
      printf("Lose ");
    else if (dp[1][i] == 1)
      printf("Win ");
    else
      printf("Loop ");
  }
}
