#include <bits/stdc++.h>
using namespace std;
const int MaxSize = 1e5 + 5;
int n, m, s;
int Win[MaxSize], Lose[MaxSize], Mark[MaxSize];
vector<vector<int>> NG(MaxSize), RG(MaxSize);
bool CheckCycle(int curr) {
  Mark[curr] = 1;
  for (auto x : NG[curr]) {
    if (Mark[x] == 1) return true;
    if (!Mark[x] && CheckCycle(x)) return true;
  }
  Mark[curr] = 2;
  return false;
}
void solve(int curr, bool win) {
  for (auto x : RG[curr]) {
    if (win && !Win[x]) {
      Win[x] = curr;
      solve(x, !win);
    }
    if (!win && !Lose[x]) {
      Lose[x] = curr;
      solve(x, !win);
    }
  }
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    int x;
    cin >> x;
    if (!x) Lose[i] = i;
    NG[i].resize(x);
    for (int j = 0; j < x; j++) {
      int y;
      cin >> y;
      NG[i][j] = y;
      RG[y].push_back(i);
    }
  }
  cin >> s;
  bool draw = CheckCycle(s);
  for (int i = 1; i <= n; i++) {
    if (Lose[i] == i) {
      solve(i, 1);
    }
  }
  if (Win[s]) {
    cout << "Win\n";
    bool flag = 1;
    while (true) {
      if (flag && Win[s]) {
        cout << s << ' ';
        s = Win[s];
        flag = !flag;
      } else if (!flag && Lose[s]) {
        cout << s << ' ';
        if (Lose[s] == s) return 0;
        s = Lose[s];
        flag = !flag;
      }
    }
  }
  if (draw)
    cout << "Draw";
  else
    cout << "Lose";
  return 0;
}
