#include <bits/stdc++.h>
using namespace std;
long long N, M;
vector<long long> G[100005];
const long long even = 0;
const long long odd = 1;
long long state[100005];
long long pre[100005][2];
void dfs(long long v) {
  for (auto u : G[v]) {
    if (state[v] & (1 << odd) && !(state[u] & (1 << even))) {
      state[u] |= (1 << even);
      pre[u][even] = v;
      dfs(u);
    }
    if (state[v] & (1 << even) && !(state[u] & (1 << odd))) {
      state[u] |= (1 << odd);
      pre[u][odd] = v;
      dfs(u);
    }
  }
}
bool tsort() {
  long long V = 0;
  long long indeg[100005] = {0};
  for (long long i = 0; i < (N); i++) {
    if (state[i]) {
      V++;
      for (auto v : G[i]) indeg[v]++;
    }
  }
  stack<long long> S;
  for (long long i = 0; i < (N); i++) {
    if (state[i] && indeg[i] == 0) S.push(i);
  }
  vector<long long> res;
  while (!S.empty()) {
    long long v = S.top();
    S.pop();
    res.push_back(v);
    for (auto u : G[v]) {
      indeg[u]--;
      if (indeg[u] == 0) S.push(u);
    }
  }
  return res.size() == V;
}
signed main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cin >> N >> M;
  for (long long i = 0; i < (N); i++) {
    long long k;
    cin >> k;
    for (long long j = 0; j < (k); j++) {
      long long a;
      cin >> a;
      a--;
      G[i].push_back(a);
    }
  }
  long long s;
  cin >> s;
  s--;
  state[s] |= (1 << even);
  pre[s][even] = -1;
  dfs(s);
  for (long long i = 0; i < (N); i++) {
    if (G[i].size() == 0 && state[i] & (1 << odd)) {
      bool f = odd;
      vector<long long> path;
      for (long long t = i; t != -1; t = pre[t][f], f ^= 1) {
        path.push_back(t);
      }
      reverse((path).begin(), (path).end());
      cout << "Win" << endl;
      for (auto v : path) cout << v + 1 << ' ';
      cout << endl;
      return 0;
    }
  }
  if (tsort())
    cout << "Lose" << endl;
  else
    cout << "Draw" << endl;
}
