#include <bits/stdc++.h>
using namespace std;
void open() { freopen("data.txt", "r", stdin); }
void out() { freopen("out.txt", "w", stdout); }
const int maxn = 1e5 + 5;
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
vector<int> G[maxn];
int flag[maxn][2], pre[maxn][2], n, m, u, v, odeg[maxn];
void dfs(int u, int p, int f) {
  if (flag[u][f]) return;
  flag[u][f] = 1;
  pre[u][f] = p;
  for (int i = 0; i < ((int)(G[u]).size()); ++i) {
    int v = G[u][i];
    dfs(v, u, f ^ 1);
  }
}
int vis[maxn];
bool loop(int u) {
  vis[u] = 1;
  bool f = 0;
  for (int i = 0; i < ((int)(G[u]).size()); ++i) {
    int v = G[u][i];
    if (vis[v] == 1)
      f = true;
    else if (vis[v] == 0)
      f = loop(v);
    if (f) return true;
  }
  vis[u] = 2;
  return 0;
}
int main() {
  int s;
  scanf("%d", &n);
  scanf("%d", &m);
  for (int i = 1; i < (n + 1); ++i) {
    int k;
    scanf("%d", &k);
    odeg[i] = k;
    while (k--) {
      scanf("%d", &v);
      G[i].push_back(v);
    }
  }
  scanf("%d", &s);
  dfs(s, 0, 0);
  for (int i = 1; i < (n + 1); ++i) {
    if (flag[i][1] && odeg[i] == 0) {
      vector<int> vec;
      int u = i, f = 1;
      while (u != 0) {
        vec.push_back(u);
        u = pre[u][f];
        f ^= 1;
      }
      puts("Win");
      for (int i = (int)(vec).size() - 1; i >= 0; i--) printf("%d ", vec[i]);
      return 0;
    }
  }
  if (loop(s)) return puts("Draw"), 0;
  puts("Lose");
  return 0;
}
