#include <bits/stdc++.h>
using namespace std;
const int N = 7123 * 2;
short in[N][N / 2];
class Graph {
 public:
  int n;
  vector<int> out_deg;
  vector<int> size;
  Graph(int vertices) {
    n = vertices;
    out_deg.resize(n);
    size.resize(n);
  }
  void add_edge(int u, int v) {
    out_deg[u] += 1;
    in[v][size[v]] = u;
    ++size[v];
  }
  vector<int> compute_result() {
    vector<int> result(n, 2);
    vector<int> q;
    result[0] = 0;
    for (int i = 0; i < n; i++) {
      if (out_deg[i] == 0) {
        q.push_back(i);
      }
    }
    while (!q.empty()) {
      int v = q.back();
      q.pop_back();
      for (int i = 0; i < size[v]; i++) {
        int x = in[v][i];
        if (result[x] != 2) continue;
        out_deg[x]--;
        if (result[v]) {
          if (out_deg[x] == 0) {
            result[x] = 0;
            q.push_back(x);
          }
        } else {
          result[x] = 1;
          q.push_back(x);
        }
      }
    }
    return result;
  }
};
int main() {
  int n;
  cin >> n;
  int k[2];
  vector<int> a[2];
  for (int i = 0; i < 2; i++) {
    cin >> k[i];
    a[i].resize(k[i]);
    for (int j = 0; j < k[i]; j++) {
      cin >> a[i][j];
    }
  }
  Graph *graph = new Graph(2 * n - 1);
  for (int i = 1; i < n; i++) {
    for (int x : a[0]) {
      int j = i - x;
      if (j == 0) {
        graph->add_edge(i, 0);
      } else {
        if (j < 0) j += n;
        j += (n - 1);
        graph->add_edge(i, j);
      }
    }
    for (int x : a[1]) {
      int j = i - x;
      if (j == 0) {
        graph->add_edge(i + (n - 1), 0);
      } else {
        if (j < 0) j += n;
        graph->add_edge(i + (n - 1), j);
      }
    }
  }
  string ans[3] = {"Lose", "Win", "Loop"};
  vector<int> ret = graph->compute_result();
  reverse(ret.begin() + 1, ret.begin() + n);
  reverse(ret.begin() + n, ret.begin() + 2 * n - 1);
  for (int i = 1; i < 2 * n - 1; i++) {
    cout << ans[ret[i]] << " ";
    if (i == n - 1) {
      cout << "\n";
    }
  }
}
