func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 2e5 + 10, inf = 0x3f3f3f3f, mod = 1000000007;   const long long INF = 0x3f3f3f3f3f3f3f3f;   const double eps = 1e-9;   void read() {}   template <typename T, typename... T2>   inline void read(T &x, T2 &...oth) {     x = 0;     int ch = getchar(), f = 0;     while (ch <  0  || ch >  9 ) {       if (ch ==  - ) f = 1;       ch = getchar();     }     while (ch >=  0  && ch <=  9 ) {       x = (x << 1) + (x << 3) + (ch ^ 48);       ch = getchar();     }     if (f) x = -x;     read(oth...);   }   int pre[maxn][2], ok = 0, tar = 0, vv[maxn];   bool vis[maxn][2];   list<int> ans;   vector<int> G[maxn];   void dfs(int x, bool sta) {     if (vis[x][sta] || ok == 2) return;     ans.push_back(x);     vv[x] = 1;     vis[x][sta] = 1;     for (int &v : G[x]) {       if (vv[v] == 1) ok = max(ok, 1);       if (vis[v][!sta]) continue;       if (G[v].size() == 0 && !sta && ok != 2) {         ok = 2;         ans.push_back(v);       }       dfs(v, !sta);     }     if (ok != 2) ans.pop_back();     vv[x] = 2;   }   signed main(signed argc, char const *argv[]) {     std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);     int n, m, s;     cin >> n >> m;     for (int i = 1, c, v; i <= n; i++) {       cin >> c;       for (int j = 1; j <= c; j++) {         cin >> v;         G[i].push_back(v);       }     }     cin >> s;     dfs(s, 0);     if (ok == 2) {       cout <<  Win  << endl;       for (int &i : ans) cout << i <<    ;     } else if (ok == 1)       cout <<  Draw  << endl;     else if (ok == 0)       cout <<  Lose  << endl;     return 0;   }   