package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var n int
if _, err := fmt.Fscan(in, &n); err != nil {
return
}
var k1 int
fmt.Fscan(in, &k1)
s1 := make([]int, k1)
for i := 0; i < k1; i++ {
fmt.Fscan(in, &s1[i])
}
var k2 int
fmt.Fscan(in, &k2)
s2 := make([]int, k2)
for i := 0; i < k2; i++ {
fmt.Fscan(in, &s2[i])
}
degree := make([][2]int, n)
for i := 0; i < n; i++ {
degree[i][0] = k1
degree[i][1] = k2
}
result := make([][2]int, n)
type State struct {
u int
t int
}
queue := make([]State, 0, 2*n)
result[0][0] = 1
result[0][1] = 1
queue = append(queue, State{0, 0}, State{0, 1})
for len(queue) > 0 {
curr := queue[0]
queue = queue[1:]
u := curr.u
t := curr.t
res := result[u][t]
prev_t := 1 - t
var moves []int
if prev_t == 0 {
moves = s1
} else {
moves = s2
}
for _, x := range moves {
v := u - x
for v < 0 {
v += n
}
v %= n
if result[v][prev_t] != 0 {
continue
}
if res == 1 {
result[v][prev_t] = 2
queue = append(queue, State{v, prev_t})
} else if res == 2 {
degree[v][prev_t]--
if degree[v][prev_t] == 0 {
result[v][prev_t] = 1
queue = append(queue, State{v, prev_t})
}
}
}
}
for t := 0; t < 2; t++ {
for i := 1; i < n; i++ {
if result[i][t] == 2 {
fmt.Fprint(out, "Win")
} else if result[i][t] == 1 {
fmt.Fprint(out, "Lose")
} else {
fmt.Fprint(out, "Loop")
}
if i == n-1 {
fmt.Fprintln(out)
} else {
fmt.Fprint(out, " ")
}
}
}
}