#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> g[200100], gr[200100];
int cnt[200100][2];
bool loose[200100][2], win[200100][2], used[200100][2];
pair<int, int> p[200100][2];
void dfs(int v, int t) {
  used[v][t] = true;
  for (int to : gr[v]) {
    if (!used[to][t ^ 1]) {
      if (t) {
        if (loose[v][1])
          win[to][0] = true;
        else if (--cnt[to][0] == 0)
          loose[to][0] = true;
        else
          continue;
        p[to][0] = {v, t};
        dfs(to, 0);
      } else {
        if (win[v][0])
          loose[to][1] = true;
        else if (--cnt[to][1] == 0)
          win[to][1] = true;
        else
          continue;
        p[to][1] = {v, t};
        dfs(to, 1);
      }
    }
  }
}
vector<int> answ;
void dfs_f(int v, int t) {
  answ.push_back(v);
  while (g[v].size()) {
    pair<int, int> x = p[v][t];
    v = x.first;
    t = x.second;
    answ.push_back(v);
  }
}
int s;
bool fv[200100];
int main(void) {
  scanf("%d %d", &n, &m);
  for (register int i = 1; i <= n; ++i) {
    int c = 0, v = -1;
    scanf("%d", &c);
    if (!c) fv[i] = true;
    while (c--) {
      scanf("%d", &v);
      g[i].push_back(v);
      gr[v].push_back(i);
      ++cnt[i][0];
      ++cnt[i][1];
    }
  }
  for (register int i = 1; i <= n; ++i) {
    if (fv[i]) {
      loose[i][0] = true;
      dfs(i, 0);
      loose[i][1] = true;
      dfs(i, 1);
    }
  }
  scanf("%d", &s);
  if (win[s][0]) {
    puts("Win");
    dfs_f(s, 0);
    for (int to : answ) printf("%d ", to);
    putc('\n', stdout);
  } else if (loose[s][0])
    puts("Lose");
  else
    puts("Draw");
  return 0;
}
