#include <bits/stdc++.h>
using namespace std;
enum { DFS_WHITE = -1, DFS_GREY, DFS_BLACK };
bool hasCycle = false;
vector<pair<int, int> > ady[100005];
vector<pair<int, int> > ady2[100005];
int visited[100005][2];
int par[100005][2];
bool dfs(int v) {
  visited[v][0] = DFS_GREY;
  bool ret = false;
  for (pair<int, int> &e : ady2[v]) {
    int dv = e.first;
    if (visited[dv][0] == DFS_WHITE) dfs(dv);
    if (visited[dv][0] == DFS_GREY) {
      hasCycle = true;
    }
  }
  visited[v][0] = DFS_BLACK;
  return false;
}
int main(int argc, char const *argv[]) {
  int n, m;
  scanf("%d %d", &n, &m);
  queue<int> q;
  memset(visited, 0, sizeof visited);
  memset(par, -1, sizeof par);
  for (int i = 0; i < n; i += 1) {
    int c;
    scanf("%d", &c);
    for (int j = 0; j < c; j += 1) {
      int a;
      scanf("%d", &a);
      --a;
      ady[a].push_back(pair<int, int>(i, 0));
      ady2[i].push_back(pair<int, int>(a, 0));
    }
    if (!c) {
      visited[i][1] = 1;
      q.push(i);
      q.push(1);
    }
  }
  int s;
  scanf("%d", &s);
  --s;
  while (!q.empty()) {
    int v = q.front();
    q.pop();
    int pl = q.front();
    q.pop();
    for (pair<int, int> &e : ady[v]) {
      int dv = e.first;
      if (visited[dv][1 - pl] == 0) {
        visited[dv][1 - pl] = 1;
        par[dv][1 - pl] = v;
        q.push(dv);
        q.push(1 - pl);
      }
    }
  }
  if (visited[s][0]) {
    printf("Win\n");
    int v = s;
    int pl = 0;
    while (v != -1) {
      printf("%d ", v + 1);
      v = par[v][pl];
      pl = 1 - pl;
    }
    printf("\n");
  } else {
    memset(visited, DFS_WHITE, sizeof visited);
    dfs(s);
    if (hasCycle) {
      printf("Draw\n");
    } else {
      printf("Lose\n");
    }
  }
  return 0;
}
