#include <bits/stdc++.h>
using namespace std;
int n, m;
const int maxn = 1e5 + 3;
int terminal[maxn];
struct spe {
  int next, to;
};
spe edge[maxn << 1];
int head[maxn];
int visit[maxn][3];
int cnt = 1, tpoint = -1;
int nxt[maxn][2];
bool dp[maxn][3];
int cir = 0;
bool dfs(int s, int val) {
  if (terminal[s] == 1) {
    tpoint = s;
    return val == 1;
  }
  if (visit[s][val] == 2) return dp[s][val];
  bool temp = false;
  visit[s][val] = 1;
  for (int i = head[s]; i != -1; i = edge[i].next) {
    int t = edge[i].to;
    if (visit[t][!val] == 1) {
      cir = 1;
      continue;
    }
    if (dfs(t, !val) == true) {
      nxt[s][val] = t;
      temp = true;
    }
  }
  visit[s][val] = 2;
  dp[s][val] = temp;
  return temp;
}
int main() {
  memset(dp, 0, sizeof dp);
  memset(visit, 0, sizeof visit);
  memset(head, -1, sizeof head);
  memset(edge, 0, sizeof edge);
  memset(terminal, 0, sizeof terminal);
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= n; i++)
    for (int j = 0; j <= 1; j++) nxt[i][j] = i;
  int counter = 0;
  for (int i = 1; i <= n; i++) {
    int k, item;
    scanf("%d", &k);
    if (k == 0) counter++, terminal[i] = 1;
    while (k--) {
      scanf("%d", &item);
      edge[cnt].to = item;
      edge[cnt].next = head[i];
      head[i] = cnt++;
    }
  }
  int start;
  scanf("%d", &start);
  bool ans = dfs(start, 0);
  if (ans == true) {
    printf("Win\n");
    int j = 0;
    printf("%d", start);
    while (nxt[start][j] != start) {
      start = nxt[start][j];
      j = !j;
      printf(" %d", start);
    }
    printf("\n");
  } else if (cir == 1)
    printf("Draw\n");
  else
    printf("Lose\n");
  return 0;
}
