#include <bits/stdc++.h>
using namespace std;
const int maxm = 7007;
vector<int> v[2];
int a, b, dp[3][maxm] = {0}, kk, n, vis[2][7005] = {0}, ans = 0;
void dfs(int k, int x);
int main() {
  int i, j, sum;
  scanf("%d", &n);
  scanf("%d", &kk);
  for (i = 1; i <= kk; i++) {
    scanf("%d", &a);
    v[0].push_back(a);
    dp[0][n - a + 1] = 1;
  }
  scanf("%d", &kk);
  for (i = 1; i <= kk; i++) {
    scanf("%d", &b);
    v[1].push_back(b);
    dp[1][n - b + 1] = 1;
  }
  for (j = 1; j <= 2; j++) {
    memset(vis, 0, sizeof(vis));
    for (i = n; i >= 2; i--) {
      dfs(i, 0);
      dfs(i, 1);
    }
  }
  for (i = 2; i <= n; i++) {
    if (dp[0][i] == 1)
      printf("Win ");
    else if (dp[0][i] == -1)
      printf("Lose ");
    else
      printf("Loop ");
  }
  printf("\n");
  for (i = 2; i <= n; i++) {
    if (dp[1][i] == 1)
      printf("Win ");
    else if (dp[1][i] == -1)
      printf("Lose ");
    else
      printf("Loop ");
  }
  printf("\n");
  return 0;
}
void dfs(int k, int x) {
  vis[x][k] = 1;
  int y;
  if (dp[x][k] == 1) return;
  int xx = (x + 1) % 2;
  int answer = 0;
  for (int i = 0; i < v[x].size(); i++) {
    y = v[x][i];
    int next = (k + y) % n;
    if (next == 0) next = n;
    if (next == 1) {
      dp[x][k] = 1;
      vis[x][k] = 1;
      return;
    }
    if (dp[xx][next] == -1) {
      answer = 1;
      dp[x][k] = 1;
      return;
    }
    if (dp[xx][next] == 1) continue;
    if (!vis[xx][next]) dfs(next, xx);
    if (dp[xx][next] == -1) {
      dp[x][k] = 1;
      return;
    }
    if (dp[xx][next] == 1) continue;
    answer = 1;
  }
  if (!answer) dp[x][k] = -1;
}
