#include <bits/stdc++.h>
const int INF = 0x3f3f3f3f;
const long long LINF = 0x3f3f3f3f3f3f3f3fll;
using namespace std;
const double eps = 1e-6;
const long long mod = 1e9 + 7;
const int maxn = 1e5 + 100;
const int maxe = 1e6 + 100;
struct node {
  int y, Next;
} data[maxn << 1];
bool dp[maxn][2], cir;
int h[maxn], num, vis[maxn][2], out[maxn], Next[maxn][2], n, m;
inline bool dfs(int x, int s) {
  if (!out[x]) return s == 1;
  if (vis[x][s] == 2) return dp[x][s];
  vis[x][s] = 1;
  bool t = 0;
  for (int i = h[x]; i; i = data[i].Next) {
    int y = data[i].y;
    if (vis[y][s ^ 1] == 1) {
      cir = 1;
      continue;
    }
    if (dfs(y, s ^ 1)) {
      t = 1;
      Next[x][s] = y;
    }
  }
  vis[x][s] = 2;
  return dp[x][s] = t;
}
inline void print(int x, int s) {
  printf("%d ", x);
  if (Next[x][s]) {
    print(Next[x][s], s ^ 1);
  }
}
void Solve() {
  cin >> n >> m;
  int to, xx;
  for (int i = 1; i <= n; i++) {
    cin >> xx;
    while (xx--) {
      cin >> to;
      ++out[i];
      data[++num].y = to;
      data[num].Next = h[i];
      h[i] = num;
    }
  }
  int st;
  cin >> st;
  if (dfs(st, 0)) {
    printf("Win\n");
    print(st, 0);
  } else if (cir) {
    printf("Draw\n");
  } else {
    printf("Lose\n");
  }
  return;
}
int main() {
  int Case = 1, cases;
  while (Case--) {
    Solve();
  }
  return 0;
}
