#include <bits/stdc++.h>
using namespace std;
vector<int> edges[100010];
int v[100010][2];
bool cyc = false;
bool dfs(int n, int c, stack<int> &q) {
  if (v[n][c]) {
    return false;
  }
  v[n][c] = true;
  if (!c && !edges[n].size()) {
    q.push(n);
    return true;
  } else {
    for (int i = int(0); i < int(edges[n].size()); i++) {
      if (dfs(edges[n][i], (c + 1) % 2, q)) {
        q.push(n);
        return true;
      }
    }
  }
  return false;
}
int vis[100010];
bool dfsC(int n) {
  if (vis[n]) return true;
  vis[n] = true;
  for (int i = int(0); i < int(edges[n].size()); i++) {
    if (dfsC(edges[n][i])) {
      return true;
    }
  }
  vis[n] = false;
  return false;
}
int main(int argc, const char *argv[]) {
  int n, m, c, x, s;
  cin >> n >> m;
  for (int i = int(0); i < int(n); i++) {
    cin >> c;
    for (int j = int(0); j < int(c); j++) {
      cin >> x;
      edges[i + 1].push_back(x);
    }
  }
  memset(v, 0, sizeof(v));
  memset(vis, 0, sizeof(vis));
  cin >> s;
  stack<int> ans;
  if (dfs(s, 1, ans)) {
    cout << "Win" << endl;
    while (!ans.empty()) {
      cout << ans.top() << " ";
      ans.pop();
    }
    cout << endl;
  } else if (dfsC(s)) {
    cout << "Draw" << endl;
  } else {
    cout << "Lose" << endl;
  }
  return 0;
}
