func_code_string: #include <bits/stdc++.h>   using namespace std;   mt19937 rnd(time(0));   const long long inf = 0x3f3f3f3f3f3f3f3fLL;   const long long N = 1e5 + 10;   const long long MOD = 1e9 + 7;   long long n, m, s;   vector<vector<long long>> g(N);   bool vis[N][2];   long long par[N][2], mark[N];   void dfs(long long u, long long f) {     vis[u][f] = 1;     for (auto i : g[u]) {       if (!vis[i][f ^ 1]) {         par[i][f ^ 1] = u;         dfs(i, f ^ 1);       }     }   }   bool cyc(long long u) {     mark[u] = 1;     for (auto i : g[u]) {       if (mark[i] == 1) return true;       if (mark[i] == 0 && cyc(i)) return true;     }     mark[u] = 2;     return false;   }   int32_t main() {     ios::sync_with_stdio(false);     cin.tie(0);     cin >> n >> m;     long long sz, x;     for (long long i = 1; i <= n; i++) {       cin >> sz;       for (long long j = 0; j < sz; j++) {         cin >> x;         g[i].push_back(x);       }     }     cin >> s;     dfs(s, 0);     for (long long i = 1; i <= n; i++) {       if ((long long)g[i].size() == 0 && vis[i][1]) {         vector<long long> res;         long long node = i, f = 1;         res.push_back(node);         while (node != s || f != 0) {           node = par[node][f];           f ^= 1;           res.push_back(node);         }         reverse(res.begin(), res.end());         cout <<  Win  <<   n ;         for (auto i : res) cout << i <<    ;         cout <<   n ;         return 0;       }     }     if (cyc(s))       cout <<  Draw  <<   n ;     else       cout <<  Lose  <<   n ;     return 0;   }   