#include <bits/stdc++.h>
using namespace std;
int N, M, a, s, c, target;
vector<int> conn[100100];
vector<int> path;
bool vis[100100][2];
bool vis2[100100][2];
bool vis3[100100], vis4[100100];
bool flag;
void dfs(int node, int k) {
  if (vis[node][k]) {
    return;
  }
  vis[node][k] = true;
  for (int i = 0; i < conn[node].size(); i++) {
    dfs(conn[node][i], (k + 1) % 2);
  }
}
void dfs2(int node) {
  if (vis3[node]) {
    flag = true;
    return;
  }
  if (vis4[node]) {
    return;
  }
  vis3[node] = true;
  vis4[node] = true;
  for (int i = 0; i < conn[node].size(); i++) {
    dfs2(conn[node][i]);
    vis3[conn[node][i]] = false;
  }
}
bool solve(int node, int k) {
  if (vis2[node][k]) {
    return false;
  }
  vis2[node][k] = true;
  if (node == target && k == 1) {
    path.push_back(node);
    return true;
  }
  for (int i = 0; i < conn[node].size(); i++) {
    if (solve(conn[node][i], (k + 1) % 2)) {
      path.push_back(node);
      return true;
    }
  }
  return false;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> N >> M;
  for (int i = 1; i <= N; i++) {
    cin >> c;
    for (int j = 0; j < c; j++) {
      cin >> a;
      conn[i].push_back(a);
    }
  }
  cin >> s;
  dfs(s, 0);
  for (int i = 1; i <= N; i++) {
    if (vis[i][1] && conn[i].size() == 0) {
      cout << "Win" << endl;
      target = i;
      solve(s, 0);
      for (int j = path.size() - 1; j >= 0; j--) {
        cout << path[j] << " ";
      }
      return 0;
    }
  }
  dfs2(s);
  if (flag) {
    cout << "Draw" << endl;
  } else {
    cout << "Lose" << endl;
  }
}
