#include <bits/stdc++.h>
using namespace std;
int n, m, st;
int tmp, tmp2;
vector<int> adj[200005];
int memo[200005][5];
bool vis[200005][5];
int stc, stn;
pair<int, int> par[200005][5];
int dp(int node, int cur) {
  if (adj[node].size() == 0) {
    if (cur == 2) {
      stc = cur;
      stn = node;
      return 1;
    }
    if (cur == 1) {
      stc = cur;
      stn = node;
    }
    return cur;
  }
  if (memo[node][cur] != -1) return memo[node][cur];
  int ret = 0;
  pair<int, int> cp;
  cp.first = node;
  cp.second = cur;
  for (int i = 0; i < adj[node].size(); i++) {
    if (cur == 2) {
      if (vis[adj[node][i]][cur]) {
        if (ret == 0) ret = 2;
        continue;
      }
      vis[adj[node][i]][cur] = 1;
      par[adj[node][i]][cur] = cp;
      int now = dp(adj[node][i], cur);
      if (now == 1) ret = 1;
      vis[adj[node][i]][cur] = 0;
    } else {
      if (vis[adj[node][i]][(cur + 1) % 2]) {
        if (ret == 0) ret = 2;
        continue;
      }
      vis[adj[node][i]][(cur + 1) % 2] = 1;
      par[adj[node][i]][(cur + 1) % 2] = cp;
      int now = dp(adj[node][i], (cur + 1) % 2);
      if (now == 1)
        ret = 1;
      else if (now == 2 && ret == 0)
        ret = 2;
      vis[adj[node][i]][(cur + 1) % 2] = 0;
    }
  }
  return memo[node][cur] = ret;
}
void dfs(int node, int cur) {
  if (node == st && cur == 0) {
    printf("%d", node);
    return;
  }
  dfs(par[node][cur].first, par[node][cur].second);
  printf(" %d", node);
  return;
}
int main() {
  memset(memo, -1, sizeof(memo));
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &tmp);
    for (int j = 1; j <= tmp; j++) {
      scanf("%d", &tmp2);
      adj[i].push_back(tmp2);
    }
  }
  scanf("%d", &st);
  int ans = dp(st, 0);
  if (ans == 0) {
    printf("Lose\n");
  } else if (ans == 2) {
    printf("Draw\n");
  } else {
    printf("Win\n");
    dfs(stn, stc);
  }
  return 0;
}
