#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int n, m, size;
struct edg {
  int to, next;
} e[2 * N], G[2 * N];
int x, y, num, head[N], dfn[N], low[N], vis[N], du[N], cnt, chu[N], size2;
int f[N][2], pre[N][2], fa[N], st[N], h, tot, S, head2[N];
pair<int, int> q[10 * N];
int he, ta, p[N];
bool used[N][2], dra;
void add(int x, int y) {
  size++;
  e[size].to = y;
  e[size].next = head[x];
  head[x] = size;
  size2++;
  G[size2].to = x;
  G[size2].next = head2[y];
  head2[y] = size2;
}
void dfs(int x) {
  cnt++;
  dfn[x] = low[x] = cnt;
  st[++h] = x;
  vis[x] = 1;
  for (int i = head2[x]; i; i = G[i].next) {
    int y = G[i].to;
    if (vis[y] == 0)
      dfs(y), low[x] = min(low[x], low[y]);
    else if (vis[y] == 1)
      low[x] = min(low[x], dfn[y]);
  }
  if (low[x] == dfn[x]) {
    tot++;
    while (st[h] != x) vis[st[h]] = 2, fa[st[h]] = tot, p[tot]++, h--;
    vis[st[h]] = 2, fa[st[h]] = tot, p[tot]++, h--;
    if (p[tot] > 1) dra = 1;
  }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &num);
    for (int j = 1; j <= num; j++) scanf("%d", &x), add(x, i), du[i]++;
  }
  scanf("%d", &S);
  dfs(S);
  for (int i = 1; i <= n; i++)
    if (vis[i] && du[i] == 0) f[i][0] = 1, q[++ta] = make_pair(i, 0);
  while (he < ta) {
    int x = q[++he].first, nw = q[he].second;
    for (int i = head[x]; i; i = e[i].next) {
      int y = e[i].to;
      if (!f[y][nw ^ 1])
        pre[y][nw ^ 1] = x, f[y][nw ^ 1] = 1, q[++ta] = make_pair(y, nw ^ 1);
      if (f[S][1]) break;
    }
  }
  if (f[S][1]) {
    printf("Win\n");
    int nw = 1;
    while (S) {
      printf("%d ", S);
      S = pre[S][nw];
      nw ^= 1;
    }
    return 0;
  }
  if (f[S][0] && !dra)
    printf("Lose");
  else
    printf("Draw");
}
