#include <bits/stdc++.h>
using namespace std;
using INT = long long;
const int NN = 310100;
vector<int> adj[NN], rev[NN];
int n, m, src;
int SolveWin() {
  vector<vector<int> > st(n + 10, vector<int>(2, 0)),
      prev(n + 10, vector<int>(2, 0));
  queue<int> q;
  for (int i = 1; i <= n; i++) {
    if (adj[i].empty()) {
      q.push(i);
      q.push(0);
      st[i][0] = 1;
    }
  }
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    int s = q.front();
    q.pop();
    for (int v : rev[u]) {
      if (st[v][s ^ 1] == 0) {
        prev[v][s ^ 1] = u;
        q.push(v);
        q.push(s ^ 1);
        st[v][s ^ 1] = 1;
      }
    }
  }
  if (st[src][1] == 1) {
    puts("Win");
    int u = src, s = 1;
    printf("%d ", u);
    while (adj[u].size() > 0) {
      u = prev[u][s];
      s ^= 1;
      printf("%d ", u);
    }
    exit(0);
  }
}
int bel[NN], vst[NN], low[NN];
int head[NN], nxt[NN], to[NN], E;
int st[NN], ins[NN], nc, nt, cnt;
void _dfs(int u) {
  ins[u] = 1, vst[st[++nt] = u] = low[u] = ++nc;
  for (int v : adj[u]) {
    if (!vst[v]) {
      _dfs(v);
      if (low[v] < low[u]) low[u] = low[v];
    } else if (ins[v] && vst[v] < low[u])
      low[u] = vst[v];
  }
  if (vst[u] == low[u]) {
    cnt++;
    while (bel[st[nt]] = cnt, ins[st[nt]] = 0, st[nt--] ^ u)
      ;
  }
}
int SolveDraw() {
  for (int i = 1; i <= n; i++)
    if (vst[i] == 0) {
      _dfs(i);
    }
  vector<int> vst(n + 2, 0), cnt(n + 2, 0);
  for (int i = 1; i <= n; i++) cnt[bel[i]]++;
  queue<int> q;
  q.push(src);
  vst[src] = 1;
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    if (cnt[bel[u]] > 1) {
      puts("Draw");
      exit(0);
    }
    for (int v : adj[u]) {
      if (vst[v]) continue;
      vst[v] = 1;
      q.push(v);
    }
  }
}
int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    int s;
    scanf("%d", &s);
    while (s--) {
      int u;
      scanf("%d", &u);
      adj[i].push_back(u);
      rev[u].push_back(i);
    }
  }
  cin >> src;
  SolveWin();
  SolveDraw();
  puts("Lose");
}
