#include <bits/stdc++.h>
using namespace std;
const int M = 100005;
int read() {
  int x = 0, flag = 1;
  char c;
  while ((c = getchar()) < '0' || c > '9')
    if (c == '-') flag = -1;
  while (c >= '0' && c <= '9')
    x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
  return x * flag;
}
int n, m, s, tot, top, ans[M], f[M], out[M], vis[M][2];
int Index, dfn[M], low[M], mx, in[M];
stack<int> st;
struct edge {
  int v, next;
  edge(int V = 0, int N = 0) : v(V), next(N) {}
} e[2 * M];
void dfs(int u, int pt) {
  vis[u][pt] = 1;
  for (int i = f[u]; i; i = e[i].next) {
    int v = e[i].v;
    if (vis[v][pt ^ 1]) continue;
    ans[++top] = v;
    if (!out[v] && !pt) {
      printf("Win\n%d", s);
      for (int i = 1; i <= top; i++) printf(" %d", ans[i]);
      exit(0);
    }
    dfs(v, pt ^ 1);
    top--;
  }
}
void tarjan(int u) {
  dfn[u] = low[u] = ++Index;
  st.push(u);
  in[u] = 1;
  for (int i = f[u]; i; i = e[i].next) {
    int v = e[i].v;
    if (!dfn[v]) {
      tarjan(v);
      low[u] = min(low[u], low[v]);
    } else if (in[v])
      low[u] = min(low[u], dfn[v]);
  }
  if (dfn[u] == low[u]) {
    int v = 0, cnt = 0;
    do {
      v = st.top();
      st.pop();
      in[v] = 0;
      cnt++;
    } while (v ^ u);
    mx = max(mx, cnt);
  }
}
int main() {
  n = read();
  m = read();
  for (int i = 1; i <= n; i++) {
    out[i] = read();
    for (int j = 1; j <= out[i]; j++) e[++tot] = edge(read(), f[i]), f[i] = tot;
  }
  s = read();
  dfs(s, 0);
  tarjan(s);
  if (mx > 1)
    puts("Draw");
  else
    puts("Lose");
}
