#include <bits/stdc++.h>
const int inf = (1ll << 30) - 1;
const int maxn = (int)1e5 + 10;
using namespace std;
vector<int> g[200200];
vector<int> gr[200200];
int nxt[200200][2];
int used[200200][2];
int n, m;
void rdfs(int v, int st) {
  if (used[v][st]) return;
  used[v][st] = 1;
  for (int i = 0; i < gr[v].size(); i++) {
    int to = gr[v][i];
    if (!used[to][st ^ 1]) {
      rdfs(to, st ^ 1);
      nxt[to][st ^ 1] = v;
    }
  }
}
int u[200200];
void dfs(int v) {
  u[v] = 1;
  for (__typeof(g[v].begin()) it = g[v].begin(); it != g[v].end(); it++) {
    int to = *it;
    if (u[to] == 0) {
      dfs(to);
    } else if (u[to] == 1) {
      printf("Draw\n");
      exit(0);
    }
  }
  u[v] = 2;
}
void solve() {
  scanf("%d%d", &n, &m);
  for (int i = 1, k; i <= n; i++) {
    scanf("%d", &k);
    for (int j = 0, x; j < k; j++) {
      scanf("%d", &x);
      g[i].push_back(x);
      gr[x].push_back(i);
    }
  }
  int st;
  scanf("%d", &st);
  for (int i = 1; i <= n; i++) {
    if (g[i].size() == 0) {
      rdfs(i, 0);
    }
  }
  if (used[st][1]) {
    printf("Win\n");
    vector<int> li;
    int cur = 1;
    while (st != 0) {
      li.push_back(st);
      st = nxt[st][cur];
      cur ^= 1;
    }
    for (int i = 0; i < li.size(); i++) {
      printf("%d%c", li[i], " \n"[i + 1 == li.size()]);
    }
    return;
  }
  dfs(st);
  printf("Lose\n");
}
int main() {
  int t = 1;
  for (int i = 1; i <= t; i++) {
    solve();
  }
  return 0;
}
