#include <bits/stdc++.h>
using namespace std;
template <typename T>
T **twoD(T l, int x, int y) {
  T **TWODSET = new T *[x];
  for (int i = 0; i < x; i++) {
    TWODSET[i] = new T[y];
  }
  return TWODSET;
}
bool validLimits(int x, int y, int nx, int ny) {
  if (x < 0 || x >= nx || y < 0 || y >= nx) return false;
  return true;
}
void checkMyNeighbors(int **a, int i, int j, int N) {
  int pt[] = {-1, 0, 1};
  int ptt[] = {-1, 0, 1};
  if (!validLimits(i, j, N, N)) return;
  for (auto k = 0; k != 3; k++) {
    for (auto kk = 0; kk != 3; kk++) {
      checkMyNeighbors(a, i + pt[k], j + ptt[kk], N);
    }
  }
}
vector<int> ans;
vector<int> vis;
bool ch = false, ch2 = true;
bool dfs(vector<vector<int> > &g, int s, int c) {
  if (ans.size() != 0) return false;
  vis[s - 1]++;
  if (vis[s - 1] > 2) {
    ch2 = false;
    return false;
  }
  if (g[s - 1].size() == 0) {
    ch = true;
    if (c % 2 == 0) {
      ans.push_back(s);
      return true;
    }
    return false;
  }
  for (int i = 0; i < g[s - 1].size(); i++) {
    if (dfs(g, g[s - 1][i], c + 1)) {
      ans.push_back(s);
      return true;
    }
  }
  return false;
}
void solve() {
  int n, m;
  cin >> n >> m;
  ;
  vector<vector<int> > g(n);
  vis.resize(n, 0);
  for (int i = 0; i < n; i++) {
    int c;
    cin >> c;
    ;
    for (auto j = 0; j != c; j++) {
      int t;
      cin >> t;
      ;
      g[i].push_back(t);
    }
  }
  int s;
  cin >> s;
  ;
  if (dfs(g, s, 1)) {
    cout << "Win\n";
    for (auto i = ans.rbegin(); i != ans.rend(); i++) cout << *i << " ";
  } else {
    !(ch && ch2) ? cout << "Draw" : cout << "Lose";
  }
}
int main(int argc, char *argv[]) {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  if (t == -1) cin >> t;
  for (int i = 0; i < t; i++) {
    solve();
  }
  return 0;
}
