#include <bits/stdc++.h>
using namespace std;
inline void init() {
  ios::sync_with_stdio(false);
  cin.tie(0);
}
const int N = 100005;
vector<int> adj[N];
bool reach[N][2];
int prv[N][2];
void dfs(int u, int k) {
  reach[u][k] = true;
  for (int v : adj[u]) {
    if (!reach[v][k ^ 1]) {
      prv[v][k ^ 1] = u;
      dfs(v, k ^ 1);
    }
  }
}
int vis[N];
bool detectCycle(int u) {
  vis[u] = 1;
  for (int v : adj[u]) {
    if (vis[v] == 1) return true;
    if (vis[v] == 0 && detectCycle(v)) return true;
  }
  vis[u] = 2;
  return false;
}
int main() {
  init();
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    int x;
    cin >> x;
    while (x--) {
      int j;
      cin >> j;
      adj[i].push_back(j);
    }
  }
  int s;
  cin >> s;
  dfs(s, 0);
  bool win = false;
  for (int i = 1; i <= n; i++) {
    if (reach[i][1] && (int)adj[i].size() == 0) {
      win = true;
      cout << "Win\n";
      int p = 1;
      vector<int> res;
      while (prv[i][p] != 0) {
        res.push_back(i);
        i = prv[i][p];
        p ^= 1;
      }
      res.push_back(s);
      reverse(res.begin(), res.end());
      for (int r : res) cout << r << ' ';
      cout << '\n';
      break;
    }
  }
  if (!win) {
    if (detectCycle(s)) {
      cout << "Draw\n";
    } else {
      cout << "Lose\n";
    }
  }
  return 0;
}
