#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7, M = 2e5 + 7;
pair<int, int> vf[4 * M];
int ant[4 * M], sf[N][2], basevf[2 * M], baseant[2 * M], basesf[N], gradex[N],
    nl(0), basenl(0), prevy[2 * N];
bool vis[N][2], vees[N], ok(false), cycle(false);
void adaugaC(int x, int y) {
  vf[++nl] = make_pair(y, 0);
  ant[nl] = sf[x][1];
  sf[x][1] = nl;
  vf[++nl] = make_pair(y, 1);
  ant[nl] = sf[x][0];
  sf[x][0] = nl;
}
void adauga(int x, int y) {
  basevf[++basenl] = y;
  baseant[basenl] = basesf[x];
  basesf[x] = basenl;
}
void dfs(int nodc, int state, int pozc) {
  if (ok) {
    return;
  }
  prevy[pozc] = nodc;
  vis[nodc][state] = true;
  if (!gradex[nodc] && !state) {
    cout << "Win\n";
    for (int i = 0; i <= pozc; ++i) {
      cout << prevy[i] << " ";
    }
    ok = true;
    return;
  }
  for (int x = sf[nodc][state]; x; x = ant[x]) {
    pair<int, int> nod = vf[x];
    if (!vis[nod.first][nod.second]) {
      dfs(nod.first, nod.second, pozc + 1);
    }
  }
}
void checkforcycles(int nodc) {
  if (cycle) {
    return;
  }
  for (int x = basesf[nodc]; x; x = baseant[x]) {
    if (vees[basevf[x]]) {
      cycle = true;
      return;
    }
    vees[basevf[x]] = true;
    checkforcycles(basevf[x]);
    vees[basevf[x]] = false;
  }
}
int main() {
  int n, m, x, nod;
  cin >> n >> m;
  for (int i = 1; i <= n; ++i) {
    cin >> gradex[i];
    for (int j = 0; j < gradex[i]; ++j) {
      cin >> x;
      adaugaC(i, x);
      adauga(i, x);
    }
  }
  cin >> nod;
  dfs(nod, 1, 0);
  if (ok) {
    return 0;
  }
  checkforcycles(nod);
  vees[nod] = true;
  if (cycle) {
    cout << "Draw\n";
    return 0;
  }
  cout << "Lose";
  return 0;
}
