#include <bits/stdc++.h>
using namespace std;
const int maxn = 100055;
bool vis[2][maxn], incycle;
int mark[2][maxn], n, m, k, limit = (int)(1e6 + 1), cnt;
vector<int> e[maxn], ans;
int dfs(int u, bool even) {
  if (vis[even][u]) return mark[even][u];
  vis[even][u] = 1;
  if (0 == even) {
    bool flag = 0;
    for (int i = 0; i < (e[u].size()); ++i) {
      int v = e[u][i];
      if (dfs(v, !even) == -1) {
        ans.push_back(v);
        return mark[even][u] = 1;
      }
      if (!mark[!even][v]) {
        incycle = flag = 1;
      }
    }
    if (!flag) return mark[even][u] = -1;
    return 0;
  } else {
    bool flag = 0;
    for (int i = 0; i < (e[u].size()); ++i) {
      int v = e[u][i];
      if (dfs(v, !even) == 1) {
        ans.push_back(v);
        return mark[even][u] = -1;
      }
      if (!mark[!even][v]) {
        incycle = flag = 1;
      }
    }
    if (!flag) return mark[even][u] = 1;
    return 0;
  }
}
int main() {
  cin >> n >> m;
  for (int i = 1; i < (n + 1); ++i) {
    int u, num;
    scanf("%d", &num);
    if (num == 0) mark[1][i] = -1, vis[1][i] = 1;
    while (num--) {
      scanf("%d", &u);
      e[i].push_back(u);
    }
  }
  int k;
  cin >> k;
  dfs(k, 0);
  ans.push_back(k);
  if (mark[0][k] == 1) {
    cout << "Win" << endl;
    for (int i = ans.size() - 1; i > (-1); --i)
      printf("%d%c", ans[i], i == 0 ? '\n' : ' ');
  } else if (incycle)
    cout << "Draw" << endl;
  else
    cout << "Lose" << endl;
  return 0;
}
