#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const long long infll = 0x3f3f3f3f3f3f3f3f;
const long long mod = 1e9 + 7;
const double eps = 1e-8;
const double pi = acos(-1.0);
const int maxn = 2e5 + 5;
const int maxm = 1.5e7 + 5;
using namespace std;
int n, m, pos, cnt;
int vis[maxn], res[maxn][2], ans[maxn];
vector<int> v[maxn];
void init() {
  cnt = 0;
  memset(vis, 0, sizeof(vis));
  memset(res, 0, sizeof(res));
  memset(ans, 0, sizeof(ans));
  for (int i = 0; i < maxn; i++) v[i].clear();
}
bool dfs(int pos, int x) {
  if (res[pos][x ^ 1] == 1) return false;
  res[pos][x ^ 1] = 1;
  ans[cnt++] = pos;
  if (v[pos].size() == 0 && res[pos][1]) return true;
  for (int i = 0; i < v[pos].size(); i++) {
    if (dfs(v[pos][i], x ^ 1)) return true;
  }
  cnt--;
  return false;
}
bool check(int pos) {
  vis[pos] = 1;
  bool flag = false;
  for (int i = 0; i < v[pos].size(); i++) {
    if (vis[v[pos][i]] == 1)
      flag = true;
    else if (vis[v[pos][i]] == 0)
      flag = check(v[pos][i]);
    if (flag) return true;
  }
  vis[pos] = 2;
  return false;
}
int main() {
  cin >> n >> m;
  init();
  for (int i = 1; i <= n; i++) {
    int num, temp;
    cin >> num;
    while (num--) {
      cin >> temp;
      v[i].push_back(temp);
    }
  }
  cin >> pos;
  if (dfs(pos, 1)) {
    cout << "Win" << endl;
    for (int i = 0; i < cnt; i++) {
      cout << ans[i] << " ";
    }
    cout << endl;
  } else if (check(pos))
    cout << "Draw" << endl;
  else
    cout << "Lose" << endl;
  return 0;
}
