#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;
}
