func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 400 + 5;   const int INF = 1e9;   int R, n, m;   pair<int, int> H[N], T[N];   int vis[N][N];   vector<pair<int, int> > adj[N][N];   queue<pair<int, int> > Q;   int dis[N][N];   int bfs(int h, int t) {     memset(dis, 0x3c, sizeof dis);     dis[h][t] = 0;     Q.push(make_pair(h, t));     while (Q.size()) {       int x = Q.front().first, y = Q.front().second;       Q.pop();       if (x + y == 0) return dis[x][y];       for (auto it : adj[x][y]) {         if (dis[x][y] + 1 < dis[it.first][it.second]) {           dis[it.first][it.second] = dis[x][y] + 1;           Q.push(it);         }       }     }     return INF;   }   bool isCycle(int h, int t) {     vis[h][t] = 1;     for (auto it : adj[h][t]) {       int x = it.first, y = it.second;       if (vis[x][y] == 1) return 1;       if (vis[x][y] == 2) continue;       if (isCycle(x, y)) return 1;     }     vis[h][t] = 2;     return 0;   }   int dp[N][N];   int fun(int x, int y) {     int &memo = dp[x][y];     if (memo != -1) return memo;     if (x + y > R) return memo = 0;     int ans = 0;     for (auto it : adj[x][y]) {       ans = max(ans, fun(it.first, it.second));     }     return memo = ans + 1;   }   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     int h, t;     cin >> h >> t >> R;     cin >> n;     for (int i = 1; i <= n; i++) {       cin >> H[i].first >> H[i].second;     }     cin >> m;     for (int i = 1; i <= m; i++) {       cin >> T[i].first >> T[i].second;     }     for (int i = 0; i < N; i++) {       for (int j = 0; j < N; j++) {         if (i + j == 0)           ;         else if (i + j > R)           ;         else {           for (int k = 1; k <= n and k <= i; k++) {             adj[i][j].push_back(make_pair(i - k + H[k].first, j + H[k].second));           }           for (int k = 1; k <= m and k <= j; k++) {             adj[i][j].push_back(make_pair(i + T[k].first, j - k + T[k].second));           }         }       }     }     int ans = bfs(h, t);     if (ans != INF) {       cout <<  Ivan n ;       cout << ans <<   n ;       exit(0);     }     if (isCycle(h, t)) {       cout <<  Draw n ;       exit(0);     }     memset(dp, -1, sizeof dp);     cout <<  Zmey n ;     cout << fun(h, t) <<   n ;     return 0;   }   