func_code_string: #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;   }   