#include <bits/stdc++.h>
using namespace std;
struct node {
  int x, t;
};
node now, temp;
queue<node> q;
vector<int> G[100005];
int out[100005], vis[100005][2], flag[100005], ff;
void dfs(int u) {
  int i, v;
  flag[u] = 1;
  for (i = 0; i < G[u].size(); i++) {
    v = G[u][i];
    if (flag[v] == 1)
      ff = 1;
    else if (flag[v] == 0)
      dfs(v);
  }
  flag[u] = 2;
}
void print(int pre, int x) {
  if (vis[pre][x ^ 1] != -1) print(vis[pre][x ^ 1], x ^ 1);
  printf("%d ", pre);
}
int main(void) {
  int n, m, k, cnt, a, i, v;
  scanf("%d%d", &n, &m);
  for (i = 1; i <= n; i++) {
    scanf("%d", &cnt);
    out[i] = cnt;
    while (cnt--) {
      scanf("%d", &a);
      G[i].push_back(a);
    }
  }
  scanf("%d", &k);
  vis[k][0] = -1;
  now.x = k, now.t = 0;
  q.push(now);
  while (q.empty() == 0) {
    now = q.front();
    q.pop();
    for (i = 0; i < G[now.x].size(); i++) {
      temp.x = G[now.x][i];
      temp.t = now.t ^ 1;
      if (vis[temp.x][temp.t] == 0) {
        vis[temp.x][temp.t] = now.x;
        q.push(temp);
      }
    }
  }
  for (i = 1; i <= n; i++) {
    if (out[i] == 0) {
      if (vis[i][1]) {
        puts("Win");
        print(vis[i][1], 1);
        printf("%d\n", i);
        return 0;
      }
    }
  }
  dfs(k);
  if (ff)
    puts("Draw");
  else
    puts("Lose");
  return 0;
}
