#include <bits/stdc++.h>
using namespace std;
int read() {
  char ch = getchar();
  int x = 0, f = 1;
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while ('0' <= ch && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
const int maxn = 1e5 + 500;
int n, m, d[maxn];
int last[maxn * 10], vis[maxn][2], flag = 0, s, sum;
vector<int> e[maxn];
queue<int> q;
void dfs(int u, int num) {
  if (flag == 1) return;
  last[num] = u;
  vis[u][num % 2] = 1;
  for (int i = 0; i < e[u].size(); ++i) {
    int v = e[u][i];
    if (vis[v][(num + 1) % 2]) continue;
    dfs(v, num + 1);
  }
  if (num % 2 && e[u].size() == 0) {
    sum = num;
    flag = 1;
  }
  if (num % 2 == 0 && flag == 0) {
    flag = 2;
    return;
  }
}
int main() {
  int x, num, cnt = 0;
  n = read(), m = read();
  for (int i = 1; i <= n; ++i) {
    num = read();
    for (int j = 1; j <= num; ++j) {
      x = read();
      e[i].push_back(x);
    }
  }
  s = read();
  q.push(s);
  while (!q.empty()) {
    int now = q.front();
    q.pop();
    for (int i = 0; i < e[now].size(); ++i) {
      cnt++;
      q.push(e[now][i]);
    }
    if (cnt >= 1000000) {
      flag = 3;
      break;
    }
  }
  dfs(s, 0);
  if (flag == 1) {
    printf("Win\n");
    for (int i = 0; i <= sum; i++) printf("%d ", last[i]);
    printf("\n");
  } else if (flag == 2)
    printf("Lose\n");
  else
    printf("Draw\n");
  return 0;
}
