func_code_string: #include <bits/stdc++.h>   using namespace std;   long long mod = 1000000007;   vector<int> v[1000];   map<vector<int>, int> mp;   const int N = 495;   int dp[N * N];   int ns[10][10];   vector<int> from[N * N];   int deg[N * N];   void solve(int i, int j) {     vector<int>& v1 = v[i];     vector<int>& v2 = v[j];     for (int a = 1; a <= 4; ++a)       if (v1[a]) {         for (int b = 1; b <= 4; ++b)           if (v2[b]) {             v1[a] -= 1;             v1[ns[a][b]] += 1;             int s = mp[v1];             v1[a] += 1;             v1[ns[a][b]] -= 1;             from[j * N + s].push_back(i * N + j);             deg[i * N + j] += 1;           }       }   }   int get(int i, int j) {     switch (dp[i * N + j]) {       case 0:         return 2;       case 1:         return 0;       default:         return 1;     }   }   int q[1000000];   int main() {     for (int i = 0; i < (10); ++i)       for (int j = 0; j < (10); ++j) ns[i][j] = (i + j) % 5;     int c = 0;     for (int i0 = 0; i0 < (9); ++i0)       for (int i1 = 0; i1 < (9); ++i1)         for (int i2 = 0; i2 < (9); ++i2)           for (int i3 = 0; i3 < (9); ++i3)             for (int i4 = 0; i4 < (9); ++i4) {               if (i0 + i1 + i2 + i3 + i4 == 8) {                 v[c++] = {i0, i1, i2, i3, i4};                 mp[v[c - 1]] = c - 1;               }             }     for (int i = 0; i < (N); ++i)       for (int j = 0; j < (N); ++j) solve(i, j);     int f = 0, e = 0;     int z = mp[{8, 0, 0, 0, 0}];     for (int i = 0; i < N; ++i) {       dp[i * N + z] = -1;       q[e++] = i * N + z;       dp[z * N + i] = 1;       q[e++] = z * N + i;     }     while (f < e) {       int c = q[f++];       for (int u : from[c])         if (!dp[u]) {           if (dp[c] == -1) {             dp[u] = 1;             q[e++] = u;           } else {             deg[u] -= 1;             if (!deg[u]) {               dp[u] = -1;               q[e++] = u;             }           }         }     }     int T;     scanf( %d , &T);     while (T--) {       int f, x;       scanf( %d , &f);       vector<int> v1(5), v2(5);       for (int i = 0; i < (8); ++i) {         scanf( %d , &x);         v1[x] += 1;       }       for (int i = 0; i < (8); ++i) {         scanf( %d , &x);         v2[x] += 1;       }       if (f) swap(v1, v2);       int ans = get(mp[v1], mp[v2]);       if (ans == 2)         puts( Deal );       else         puts(f ^ ans ?  Bob  :  Alice );     }     return 0;   }   