#include <bits/stdc++.h>   #pragma comment(linker,  /STACK:167772160000 )   using namespace std;   void redirectIO() {     ios::sync_with_stdio(false);     cin.tie(0);   }   int sc1, sc2;   int best;   vector<pair<int, int> > bestAns;   vector<pair<int, int> > solve() {     best = -10;     bestAns.clear();     for (int a = 0; a <= 3; a++) {       for (int b = 0; a + b <= 3; b++) {         for (int c = 0; c <= 3; c++) {           for (int d = 0; d + c <= 3; d++) {             for (int aa = 0; aa <= 1; aa++)               for (int bb = 0; aa + bb <= 1; bb++)                 for (int cc = 0; cc + bb + aa <= 1; cc++)                   for (int dd = 0; dd + bb + cc + aa <= 1; dd++) {                     if (a + b - c - d + aa + bb - cc - dd <= best) continue;                     if ((d + c + dd + cc == 3) == (a + b + aa + bb == 3))                       continue;                     if (dd + cc + aa + bb > 0 && a + b + c + d != 4) continue;                     if (a + b + c + d > 4) continue;                     if (aa + bb > 0 && a + b != 2) continue;                     if (cc + dd > 0 && c + d != 2) continue;                     vector<pair<int, int> > cur;                     cur.reserve(5);                     int s1 = sc1, s2 = sc2;                     for (int i = 0; i < (a); i++) {                       s1 -= 26;                       s2 -= 24;                       cur.push_back(make_pair(26, 24));                     }                     for (int i = 0; i < (b); i++) {                       s1 -= 25;                       cur.push_back(make_pair(25, 0));                     }                     for (int i = 0; i < (c); i++) {                       s1 -= 24;                       s2 -= 26;                       cur.push_back(make_pair(24, 26));                     }                     for (int i = 0; i < (d); i++) {                       s2 -= 25;                       cur.push_back(make_pair(0, 25));                     }                     for (int i = 0; i < (aa); i++) {                       s1 -= 16;                       s2 -= 14;                       cur.push_back(make_pair(16, 14));                     }                     for (int i = 0; i < (bb); i++) {                       s1 -= 15;                       cur.push_back(make_pair(15, 0));                     }                     for (int i = 0; i < (cc); i++) {                       s1 -= 14;                       s2 -= 16;                       cur.push_back(make_pair(14, 16));                     }                     for (int i = 0; i < (dd); i++) {                       s2 -= 15;                       cur.push_back(make_pair(0, 15));                     }                     if (s1 < 0 || s2 < 0) continue;                     if (a > 0) {                       int df = min(s1, s2);                       int ind = 0;                       cur[ind].first += df;                       cur[ind].second += df;                       s1 -= df;                       s2 -= df;                     }                     if (c > 0) {                       int df = min(s1, s2);                       int ind = a + b;                       cur[ind].first += df;                       cur[ind].second += df;                       s1 -= df;                       s2 -= df;                     }                     if (aa > 0) {                       int df = min(s1, s2);                       int ind = a + b + c + d;                       cur[ind].first += df;                       cur[ind].second += df;                       s1 -= df;                       s2 -= df;                     }                     if (cc > 0) {                       int df = min(s1, s2);                       int ind = a + b + c + d;                       cur[ind].first += df;                       cur[ind].second += df;                       s1 -= df;                       s2 -= df;                     }                     for (int ind = a + b + c + d + aa;                          ind < a + b + c + d + aa + bb; ind++) {                       int take = min(13, s2);                       s2 -= take;                       cur[ind].second += take;                     }                     for (int ind = a; ind < a + b; ind++) {                       int take = min(23, s2);                       s2 -= take;                       cur[ind].second += take;                     }                     for (int ind = a + b + c; ind < a + b + c + d; ind++) {                       int take = min(23, s1);                       s1 -= take;                       cur[ind].first += take;                     }                     for (int ind = a + b + c + d + aa + bb + cc;                          ind < a + b + c + d + aa + bb + cc + dd; ind++) {                       int take = min(13, s1);                       s1 -= take;                       cur[ind].first += take;                     }                     if (s1 != 0 || s2 != 0) continue;                     best = a + b - c - d + aa + bb - cc - dd;                     if (a + b == 3) {                       swap(cur[0], cur.back());                     }                     bestAns = cur;                   }           }         }       }     }     return bestAns;   }   int main() {     redirectIO();     int m;     cin >> m;     while (m--) {       cin >> sc1 >> sc2;       vector<pair<int, int> > cur = solve();       if (cur.empty())         cout <<  Impossible n ;       else {         int cnta = 0;         for (pair<int, int> x : cur)           if (x.first > x.second) cnta++;         cout << cnta <<  :  << cur.size() - cnta <<   n ;         for (pair<int, int> x : cur) cout << x.first <<  :  << x.second <<    ;         cout <<   n ;       }     }     return 0;   }