#include <bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;
using vi = vector<int>;
using ll = long long;
using ull = unsigned long long;
vi G[100001];
vi GT[100001];
bool vis[100001];
int topo[100001];
int tim;
void dfs(int v) {
  if (vis[v]) return;
  vis[v] = true;
  for (auto u : G[v]) dfs(u);
  topo[--tim] = v;
}
int scc[100001];
bool marked[100001];
int sccsize[100001];
void dfsscc(int v, int s) {
  if (vis[v]) return;
  vis[v] = true;
  scc[v] = s;
  sccsize[s]++;
  for (auto u : GT[v]) dfsscc(u, s);
}
void markscc(int v) {
  if (vis[v]) return;
  vis[v] = true;
  marked[scc[v]] = true;
  for (auto u : G[v]) markscc(u);
}
bool vis2[100001][2];
int parent[100001][2];
void dfs3(int v, int p, bool k = false) {
  if (vis2[v][k]) return;
  vis2[v][k] = true;
  parent[v][k] = p;
  for (auto u : GT[v]) dfs3(u, v, !k);
}
void solve() {
  int n, m, c, s;
  cin >> n >> m;
  for (int i = 0; i < (n); ++i) {
    cin >> c;
    G[i + 1].resize(c);
    for (int j = 0; j < (c); ++j) {
      cin >> G[i + 1][j];
      GT[G[i + 1][j]].push_back(i + 1);
    }
  }
  cin >> s;
  tim = n;
  for (int i = 0; i < (n); ++i) dfs(i + 1);
  fill(vis, vis + n + 1, false);
  int sccnum = 0;
  for (int i = 0; i < (n); ++i)
    if (!vis[topo[i]]) dfsscc(topo[i], sccnum++);
  fill(vis, vis + n + 1, false);
  markscc(s);
  bool draw = false;
  for (int i = scc[s]; i < sccnum; ++i)
    if (marked[i] && sccsize[i] > 1) draw = true;
  for (int i = 0; i < (n); ++i)
    if (marked[scc[i + 1]] && G[i + 1].empty()) dfs3(i + 1, -1);
  if (vis2[s][1]) {
    cout << "Win\n";
    int xd = 1;
    while (!G[s].empty()) {
      cout << s << ' ';
      s = parent[s][xd];
      xd = 1 - xd;
    }
    cout << s << '\n';
  } else
    cout << (draw ? "Draw" : "Lose") << '\n';
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  solve();
  return 0;
}
