#include <bits/stdc++.h>
using namespace std;
const int maxn = 6e5 + 10;
const int maxm = 1e6 + 10;
const int INF = 0x3f3f3f3f;
int casn, n, m, k;
int head[maxn], nume;
struct node {
  int to, next;
} e[maxm];
void add(int a, int b) {
  e[++nume] = (node){b, head[a]};
  head[a] = nume;
}
int flag = 0, draw = 0;
int top, ans[maxn], s, vis[maxn];
void dfs(int now) {
  int cnt = 0;
  vis[now] = 1;
  ans[++top] = now;
  for (int i = head[now]; i; i = e[i].next) {
    int to = e[i].to;
    if (flag) return;
    if (!vis[to]) dfs(to);
    cnt++;
  }
  if (now > n && cnt == 0) flag = 1;
  if (flag == 0) top--;
}
int dfs2(int now) {
  if (vis[now] == 2) return 1;
  vis[now] = 2;
  for (int i = head[now]; i; i = e[i].next) {
    int to = e[i].to;
    if (!vis[to]) {
      if (dfs2(to)) return 1;
    } else if (vis[to] == 2)
      return 1;
  }
  vis[now] = 1;
  return 0;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    int a, b;
    cin >> a;
    while (a--) {
      cin >> b;
      add(i + 2 * n, b + 2 * n);
      add(i, b + n);
      add(i + n, b);
    }
  }
  cin >> s;
  draw = dfs2(s + 2 * n);
  top = 0;
  memset(vis, 0, sizeof vis);
  dfs(s);
  if (flag) {
    cout << "Win\n";
    for (int i = 1; i <= top; i++) {
      cout << (ans[i] > n ? ans[i] - n : ans[i]) << ' ';
    }
    cout << endl;
  } else if (draw)
    cout << "Draw\n";
  else
    cout << "Lose\n";
  return 0;
}
