#include <bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
const int maxn = 2e5 + 5;
int n, m, s, flag, vis[maxn] = {}, path[maxn] = {}, cnt = 0, vs[maxn] = {};
vector<int> g[maxn], circle;
bool hasloop(int u) {
  vs[u] = 1;
  bool f = false;
  for (int i = 0; i < g[u].size(); i++) {
    if (vs[g[u][i]] == 1)
      f = true;
    else if (vs[g[u][i]] == 0)
      f = hasloop(g[u][i]);
    if (f) return true;
  }
  vs[u] = 2;
  return false;
}
void dfs(int u, int deep, vector<int>& g2) {
  vis[u]++;
  g2.push_back(u);
  if (flag == 2) return;
  if (g[u].size() == 0) {
    if (deep & 1) {
      for (int i = 0; i < g2.size(); i++) path[i] = g2[i];
      flag = 2;
      cnt = g2.size();
    }
    g2.pop_back();
    return;
  }
  for (int i = 0; i < g[u].size(); i++) {
    if (vis[g[u][i]] < 2) dfs(g[u][i], deep + 1, g2);
    if (flag == 2) break;
  }
  g2.pop_back();
}
int main() {
  scanf("%d%d", &n, &m);
  memset(vis, 0, sizeof(vis));
  flag = 0;
  memset(vs, 0, sizeof(vs));
  for (int i = 1; i <= n; i++) {
    int c;
    scanf("%d", &c);
    for (int j = 1; j <= c; j++) {
      int x;
      scanf("%d", &x);
      g[i].push_back(x);
    }
  }
  scanf("%d", &s);
  if (hasloop(s)) flag = 1;
  vector<int> g2;
  dfs(s, 0, g2);
  if (flag == 2) {
    printf("Win\n");
    printf("%d", path[0]);
    for (int i = 1; i < cnt; i++) printf(" %d", path[i]);
    printf("\n");
  } else if (flag == 1)
    printf("Draw\n");
  else
    printf("Lose\n");
  return 0;
}
