func_code_string: #include <bits/stdc++.h>   using namespace std;   inline void init() {     ios::sync_with_stdio(false);     cin.tie(0);   }   const int N = 100005;   vector<int> adj[N];   bool reach[N][2];   int prv[N][2];   void dfs(int u, int k) {     reach[u][k] = true;     for (int v : adj[u]) {       if (!reach[v][k ^ 1]) {         prv[v][k ^ 1] = u;         dfs(v, k ^ 1);       }     }   }   int vis[N];   bool detectCycle(int u) {     vis[u] = 1;     for (int v : adj[u]) {       if (vis[v] == 1) return true;       if (vis[v] == 0 && detectCycle(v)) return true;     }     vis[u] = 2;     return false;   }   int main() {     init();     int n, m;     cin >> n >> m;     for (int i = 1; i <= n; i++) {       int x;       cin >> x;       while (x--) {         int j;         cin >> j;         adj[i].push_back(j);       }     }     int s;     cin >> s;     dfs(s, 0);     bool win = false;     for (int i = 1; i <= n; i++) {       if (reach[i][1] && (int)adj[i].size() == 0) {         win = true;         cout <<  Win n ;         int p = 1;         vector<int> res;         while (prv[i][p] != 0) {           res.push_back(i);           i = prv[i][p];           p ^= 1;         }         res.push_back(s);         reverse(res.begin(), res.end());         for (int r : res) cout << r <<    ;         cout <<   n ;         break;       }     }     if (!win) {       if (detectCycle(s)) {         cout <<  Draw n ;       } else {         cout <<  Lose n ;       }     }     return 0;   }   