#include <bits/stdc++.h>
using namespace std;
void err(istringstream &iss) {}
template <typename T, typename... Args>
void err(istringstream &iss, const T &varVal, const Args &...args) {
  string varName;
  iss >> varName;
  if (varName.back() == ',') varName.back() = ' ';
  cout << varName << " = " << varVal << "; ", err(iss, args...);
}
int n, m, K, T, Q, cn;
int k[5], s[5][7005], cntLosingEdge[5][7005];
char memo[5][7005], res[][7] = {"Loop", "Lose", "Win"};
void dpBackWards(bool isMorty, int monsterPos) {
  for (int i = 0; i < k[!isMorty]; i++) {
    int oldMonsterPos = monsterPos - s[!isMorty][i];
    if (oldMonsterPos < 0) oldMonsterPos += n;
    char &oldret = memo[!isMorty][oldMonsterPos];
    if (!memo[isMorty][monsterPos]) {
      if (oldret == -1) oldret = 1, dpBackWards(!isMorty, oldMonsterPos);
    } else if (memo[isMorty][monsterPos] == 1) {
      if (++cntLosingEdge[!isMorty][oldMonsterPos] == k[!isMorty] &&
          oldret == -1)
        oldret = 0, dpBackWards(!isMorty, oldMonsterPos);
    }
  }
}
int main() {
  cin.tie(NULL);
  cout.tie(NULL);
  scanf("%d", &n);
  for (int i = 0; i < 2; i++) {
    scanf("%d", &k[i]);
    for (int j = 0; j < k[i]; j++) {
      scanf("%d", &s[i][j]);
    }
  }
  memset(memo, -1, sizeof(memo));
  memo[0][0] = memo[1][0] = 0, dpBackWards(0, 0), dpBackWards(1, 0);
  for (int i = 0; i < 2; i++) {
    for (int j = 1; j <= n - 1; j++) {
      printf("%s", res[memo[i][j] + 1]);
      printf("%c", " \n"[j == n - 1]);
    }
  }
  return 0;
}
