#include <bits/stdc++.h>
using namespace std;
int next_v[100010][2], out[100010];
bool inQ[100010][2], vis[100010], calc[100010];
vector<int> rev[100010], g[100010];
bool dfs(int u) {
  vis[u] = true;
  bool found = false;
  for (int& v : g[u]) {
    if (vis[v])
      found = true;
    else if (!calc[v])
      found |= dfs(v);
  }
  calc[u] = true;
  vis[u] = false;
  return found;
}
int main() {
  int n, m, c, v;
  scanf("%d%d", &n, &m);
  for (int u = 1; u <= n; u++) {
    scanf("%d", &c);
    for (int i = 1; i <= c; i++) {
      scanf("%d", &v);
      out[u]++;
      g[u].push_back(v);
      rev[v].push_back(u);
    }
  }
  queue<pair<int, int> > q;
  for (int v = 1; v <= n; v++) {
    if (out[v] == 0) {
      inQ[v][0] = true;
      next_v[v][0] = -1;
      q.push(pair<int, int>(v, 0));
    }
  }
  while (!q.empty()) {
    int v = q.front().first, is_odd = q.front().second;
    q.pop();
    for (int& u : rev[v]) {
      if (!inQ[u][!is_odd]) {
        inQ[u][!is_odd] = true;
        next_v[u][!is_odd] = v;
        q.push(pair<int, int>(u, !is_odd));
      }
    }
  }
  int s;
  scanf("%d", &s);
  if (inQ[s][1]) {
    puts("Win");
    int is_odd = 1;
    while (s != -1) {
      printf("%d ", s);
      s = next_v[s][is_odd];
      is_odd = !is_odd;
    }
    puts("");
  } else {
    if (dfs(s))
      puts("Draw");
    else
      puts("Lose");
  }
  return 0;
}
