#include <bits/stdc++.h>
using namespace std;
int n, m, k, i, o, ans, second, ok, used[100000 + 10], dp[100000 + 10][3];
pair<int, int> pr[100000 + 10][3];
vector<int> v;
vector<int> a[100000 + 10];
void cycle(int x) {
  used[x] = 1;
  for (int i = 0; i < a[x].size(); i++) {
    if (used[a[x][i]] == 0)
      cycle(a[x][i]);
    else if (used[a[x][i]] == 1) {
      ok = 1;
    }
  }
  used[x] = 2;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  for (i = 1; i <= n; i++) {
    int x;
    cin >> x;
    for (int j = 1; j <= x; j++) {
      int y;
      cin >> y;
      a[i].push_back(y);
    }
    dp[i][0] = INT_MAX;
    dp[i][1] = INT_MAX;
  }
  cin >> second;
  queue<pair<int, int> > ss;
  dp[second][1] = 0;
  ss.push({second, 1});
  while (!ss.empty()) {
    int x = ss.front().first;
    int y = ss.front().second;
    ss.pop();
    for (int i = 0; i < a[x].size(); i++) {
      int to = a[x][i];
      if (dp[x][y] + 1 < dp[to][y ^ 1]) {
        dp[to][y ^ 1] = dp[x][y] + 1;
        pr[to][y ^ 1] = {x, y};
        ss.push({to, (y ^ 1)});
      }
    }
  }
  int first = 0;
  for (int i = 1; i <= n; i++) {
    if (dp[i][0] != INT_MAX && a[i].size() == 0) {
      first = i;
      break;
    }
  }
  if (first != 0) {
    v.push_back(first);
    int now = 0;
    while (true) {
      if (first == second && now == 1) break;
      int x = pr[first][now].first;
      int y = pr[first][now].second;
      v.push_back(x);
      now = y;
      first = x;
    }
    cout << "Win"
         << "\n";
    for (i = v.size() - 1; i >= 0; i--) cout << v[i] << " ";
    return 0;
  }
  ok = 0;
  cycle(second);
  if (ok == 1) {
    cout << "Draw";
    return 0;
  }
  cout << "Lose";
}
