#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5;
vector<int> g[MAXN + 1];
vector<int> game_grph[2 * MAXN + 10];
int seen[2 * MAXN + 10], cycle, father[2 * MAXN + 10];
void game_dfs(int node) {
  seen[node] = 1;
  for (auto it : game_grph[node])
    if (seen[it] == 0) {
      father[it] = node;
      game_dfs(it);
    }
}
void is_cycle(int node) {
  seen[node] = 1;
  for (auto it : game_grph[node])
    if (seen[it] == 0)
      is_cycle(it);
    else if (seen[it] == 1)
      cycle = 1;
  seen[node] = 2;
}
int main() {
  int n, m, num, node;
  ios::sync_with_stdio(false);
  cin >> n >> m;
  for (int i = 1; i <= n; ++i) {
    cin >> num;
    for (int j = 0; j < num; ++j) {
      cin >> node;
      g[i].push_back(node);
      game_grph[2 * i].push_back(2 * node + 1);
      game_grph[2 * i + 1].push_back(2 * node);
    }
  }
  cin >> node;
  game_dfs(2 * node);
  for (int i = 2 * 1; i <= 2 * n + 1; ++i)
    if (i % 2 == 1 && seen[i] && g[i / 2].size() == 0U) {
      cout << "Win\n";
      vector<int> sol;
      for (int k = i; k > 0; k = father[k]) sol.push_back(k / 2);
      reverse(sol.begin(), sol.end());
      for (auto it : sol) cout << it << " ";
      return 0;
    }
  memset(seen, 0, sizeof seen);
  is_cycle(2 * node);
  if (cycle)
    cout << "Draw";
  else
    cout << "Lose";
  return 0;
}
