func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m;   const int MAXN = 200100;   int win = 0, ti = 0;   int vis[MAXN][2] = {0};   int vs[MAXN] = {0};   int path[MAXN], cnt;   vector<int> g[MAXN];   bool dfsloop(int u) {     vs[u] = 1;     bool f = false;     for (int i = 0; i < g[u].size(); i++) {       int v = g[u][i];       if (vs[v] == 1)         f = true;       else if (vs[v] == 0)         f = dfsloop(v);       if (f) return true;     }     vs[u] = 2;     return false;   }   void dfs(int u, int ly) {     vis[u][ly % 2] = 1;     int sz = g[u].size();     cnt = ly;     path[ly] = u;     if (!sz) {       if (ly % 2 == 0) {         win = 1;         return;       } else         ;     }     for (int i = 0; i < sz; i++) {       int v = g[u][i];       if (vis[v][(ly + 1) % 2] == 0) {         dfs(v, ly + 1);         if (win) return;       }     }   }   int main() {     int n, m;     scanf( %d%d , &n, &m);     for (int i = 1; i <= n; i++) {       int ci;       scanf( %d , &ci);       while (ci--) {         int v;         scanf( %d , &v);         g[i].push_back(v);       }     }     int s;     scanf( %d , &s);     dfs(s, 1);     if (win) {       printf( Win n );       for (int i = 1; i <= cnt; i++) printf( %d  , path[i]);     } else {       bool res = dfsloop(s);       if (res)         printf( Draw );       else         printf( Lose );     }     return 0;   }   