func_code_string: #include <bits/stdc++.h>   using namespace std;   int dp[6][6][220][220], aa[50], bb[50];   void init() {     memset(dp, -1, sizeof(dp));     dp[0][0][0][0] = 0;     for (int s1 = 0; s1 < 3; ++s1)       for (int s2 = 0; s2 < 3; ++s2)         for (int j = 0; j < 220; ++j)           for (int k = 0; k < 220; ++k)             if (~dp[s1][s2][j][k]) {               int bas = (s1 + s2 == 4 ? 15 : 25);               for (int t2 = 0; t2 + k < 220; ++t2) {                 int t1 = max(bas, t2 + 2);                 if (t1 + j >= 220) break;                 dp[s1 + 1][s2][j + t1][k + t2] = t1 * 220 + t2;               }               for (int t1 = 0; t1 + j < 220; ++t1) {                 int t2 = max(bas, t1 + 2);                 if (t2 + k >= 220) break;                 dp[s1][s2 + 1][j + t1][k + t2] = t1 * 220 + t2;               }             }   }   void solve() {     int m;     scanf( %d , &m);     while (m--) {       int a, b;       scanf( %d%d , &a, &b);       int w1 = -10, w2 = -5, tp = a + b, cnt = a + b;       for (int s1 = 0; s1 <= 3; ++s1)         for (int s2 = 0; s2 <= 3; ++s2) {           if ((!(~dp[s1][s2][a][b])) || max(s1, s2) < 3) continue;           if (s1 - s2 > w1 - w2) w1 = s1, w2 = s2;         }       if (w1 < 0) {         puts( Impossible );         continue;       }       tp = cnt = w1 + w2;       printf( %d:%d n , w1, w2);       while (cnt) {         int t1 = dp[w1][w2][a][b] / 220, t2 = dp[w1][w2][a][b] % 220;         aa[cnt] = t1, bb[cnt] = t2, a -= t1, b -= t2, cnt--;         if (t1 > t2)           w1--;         else           w2--;       }       for (int i = 1; i <= tp; i++)         printf( %d:%d%c , aa[i], bb[i], i < tp ?     :   n );     }   }   int main() {     init();     solve();     return 0;   }   