#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 to;
  int next;
};
bool dp[maxn][2], cir;
vector<int> V[maxn];
int vis[maxn][2];
int Next[maxn][2], n, m;
inline bool dfs(int x, int s) {
  if (!V[x].size()) return s == 1;
  if (vis[x][s] == 2) return dp[x][s];
  vis[x][s] = 1;
  bool t = 0;
  for (int i = 0; i < V[x].size(); i++) {
    int v = V[x][i];
    if (vis[v][s ^ 1] == 1) {
      cir = 1;
      continue;
    }
    if (dfs(v, s ^ 1)) {
      t = 1;
      Next[x][s] = v;
    }
  }
  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 xx, v;
  for (int i = 1; i <= n; i++) {
    cin >> xx;
    for (int j = 0; j < xx; j++) {
      cin >> v;
      V[i].push_back(v);
    }
  }
  int st;
  cin >> st;
  if (dfs(st, 0)) {
    puts("Win");
    print(st, 0);
  } else if (cir)
    puts("Draw");
  else
    puts("Lose");
}
int main() {
  int Case = 1, cases;
  while (Case--) {
    Solve();
  }
  return 0;
}
