#include <bits/stdc++.h>
using namespace std;
mt19937 rnd(time(0));
const long long inf = 0x3f3f3f3f3f3f3f3fLL;
const long long N = 1e5 + 10;
const long long MOD = 1e9 + 7;
long long n, m, s;
vector<vector<long long>> g(N);
bool vis[N][2];
long long par[N][2], mark[N];
void dfs(long long u, long long f) {
  vis[u][f] = 1;
  for (auto i : g[u]) {
    if (!vis[i][f ^ 1]) {
      par[i][f ^ 1] = u;
      dfs(i, f ^ 1);
    }
  }
}
bool cyc(long long u) {
  mark[u] = 1;
  for (auto i : g[u]) {
    if (mark[i] == 1) return true;
    if (mark[i] == 0 && cyc(i)) return true;
  }
  mark[u] = 2;
  return false;
}
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> m;
  long long sz, x;
  for (long long i = 1; i <= n; i++) {
    cin >> sz;
    for (long long j = 0; j < sz; j++) {
      cin >> x;
      g[i].push_back(x);
    }
  }
  cin >> s;
  dfs(s, 0);
  for (long long i = 1; i <= n; i++) {
    if ((long long)g[i].size() == 0 && vis[i][1]) {
      vector<long long> res;
      long long node = i, f = 1;
      res.push_back(node);
      while (node != s || f != 0) {
        node = par[node][f];
        f ^= 1;
        res.push_back(node);
      }
      reverse(res.begin(), res.end());
      cout << "Win" << '\n';
      for (auto i : res) cout << i << ' ';
      cout << '\n';
      return 0;
    }
  }
  if (cyc(s))
    cout << "Draw" << '\n';
  else
    cout << "Lose" << '\n';
  return 0;
}
