#include <bits/stdc++.h>
using namespace std;
stack<int> st;
vector<int> v[100005], rv[100005], ans;
int nodes, vis[100005], dp[100005][2], par[100005];
bool chk, dpv[100005][2];
void dfs(int n) {
  nodes++;
  vis[n] = 1;
  for (int i = 0; i < v[n].size(); i = i + 1) {
    if (vis[v[n][i]] != 1) dfs(v[n][i]);
  }
  if (v[n].size() == 0) chk = 1;
  st.push(n);
}
void dfs1(int n, int p) {
  par[n] = p;
  vis[n] = 2;
  for (int i = 0; i < rv[n].size(); i = i + 1) {
    if (vis[rv[n][i]] == 1) {
      dfs1(rv[n][i], p);
    }
  }
}
int dfs2(int n, bool c) {
  if (dpv[n][c]) return dp[n][c];
  dpv[n][c] = 1;
  dp[n][c] = 1000000000;
  if (v[n].size() == 0) {
    if (c)
      dp[n][1] = 1;
    else
      dp[n][0] = 1000000000;
  }
  for (int i = 0; i < v[n].size(); i = i + 1) {
    if (par[n] == par[v[n][i]]) continue;
    dp[n][c] = min(dp[n][c], 1 + dfs2(v[n][i], !c));
  }
  for (int i = 0; i < v[n].size(); i = i + 1) {
    if (par[n] != par[v[n][i]]) continue;
    dp[n][c] = min(dp[n][c], 1 + dfs2(v[n][i], !c));
  }
  return dp[n][c];
}
void path(int n, bool c) {
  ans.push_back(n);
  for (int i = 0; i < v[n].size(); i = i + 1) {
    if (dp[v[n][i]][!c] + 1 == dp[n][c]) {
      path(v[n][i], !c);
      return;
    }
  }
}
int main() {
  bool draw;
  int n, m, c, a, s;
  scanf("%d %d", &n, &m);
  for (int i = 1; i < n + 1; i = i + 1) {
    scanf("%d", &c);
    while (c--) {
      scanf("%d", &a);
      v[i].push_back(a);
      rv[a].push_back(i);
    }
  }
  scanf("%d", &s);
  dfs(s);
  if (!chk) {
    printf("Draw\n");
    return 0;
  }
  c = 1;
  while (!st.empty()) {
    a = st.top();
    st.pop();
    if (vis[a] == 2) continue;
    dfs1(a, c);
    c++;
  }
  if (nodes > (c - 1))
    draw = 1;
  else
    draw = 0;
  if (dfs2(s, 0) < 1000000000) {
    path(s, 0);
    printf("Win\n");
    for (int i = 0; i < ans.size(); i = i + 1) printf("%d ", ans[i]);
    return 0;
  } else {
    if (draw) {
      printf("Draw\n");
      return 0;
    } else {
      printf("Lose\n");
      return 0;
    }
  }
}
