#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000000 + 10;
int n, f[maxn][2], from[maxn][2], m, s, u, sta, flag;
vector<int> g[maxn];
stack<int> S;
int inc[maxn], pre[maxn], low[maxn], ins[maxn], cnt, clk, sz[maxn], sccno[maxn];
int fangan[maxn], tot;
void dfs(int p, int st) {
  for (int i = 0; i < g[p].size(); i++) {
    int v = g[p][i];
    if (!f[v][st ^ 1]) {
      f[v][st ^ 1] = 1;
      from[v][st ^ 1] = p;
      dfs(v, st ^ 1);
    }
  }
}
void Dfs(int p) {
  low[p] = pre[p] = ++clk;
  S.push(p);
  ins[p] = 1;
  for (int i = 0; i < g[p].size(); i++) {
    int v = g[p][i];
    if (!pre[v]) {
      Dfs(v);
      low[p] = min(low[p], low[v]);
    } else if (ins[v])
      low[p] = min(low[p], pre[v]);
  }
  if (low[p] == pre[p]) {
    cnt++;
    while (1) {
      int x = S.top();
      S.pop();
      ins[x] = 0;
      sccno[x] = cnt;
      sz[cnt]++;
      if (x == p) break;
    }
  }
}
void find_scc() {
  for (int i = 1; i <= n; i++)
    if (!pre[i]) Dfs(i);
  for (int i = 1; i <= n; i++)
    if (sz[sccno[i]] > 1) inc[i] = 1;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    int k;
    scanf("%d", &k);
    for (int j = 1; j <= k; j++) {
      int x;
      scanf("%d", &x);
      g[i].push_back(x);
    }
  }
  find_scc();
  scanf("%d", &s);
  f[s][0] = 1;
  dfs(s, 0);
  for (int i = 1; i <= n; i++) {
    if (!g[i].size() && f[i][1]) {
      flag = 2;
      u = i;
      sta = 1;
      break;
    }
    if ((f[i][0] || f[i][1]) && inc[i]) flag = 1;
  }
  if (flag == 1) {
    puts("Draw");
    return 0;
  }
  if (flag == 0) {
    puts("Lose");
    return 0;
  }
  puts("Win");
  while (1) {
    fangan[++tot] = u;
    if (u == s && sta == 0) break;
    u = from[u][sta];
    sta ^= 1;
  }
  for (int i = tot; i; i--) printf("%d ", fangan[i]);
}
