#include <bits/stdc++.h>
using namespace std;
vector<int> am = {2, 3, 4, 4, 3, 2}, tot = {25, 25, 25, 25, 15};
vector<pair<int, int> > pts = {{0, 3}, {1, 3}, {2, 3}, {3, 2}, {3, 1}, {3, 0}};
bool dp[5][4][4][201][201], vis[5][4][4][201][201];
pair<int, int> par[5][4][4][201][201];
bool solve(int game, int my, int he, int ptmy, int pthe) {
  if (game < 0) return !my && !he && !ptmy && !pthe;
  bool &r = dp[game][my][he][ptmy][pthe];
  if (vis[game][my][he][ptmy][pthe]) return r;
  vis[game][my][he][ptmy][pthe] = 1;
  if (my && (game < 4 || game == 4 && my > he)) {
    for (int i = 0, ThxDem = tot[game] - 1; i < ThxDem; ++i) {
      if (pthe < i || ptmy < tot[game]) break;
      if (solve(game - 1, my - 1, he, ptmy - tot[game], pthe - i)) {
        par[game][my][he][ptmy][pthe] = {tot[game], i};
        return r = 1;
      }
    }
    for (int i = tot[game] + 1, ThxDem = ptmy + 1; i < ThxDem; ++i) {
      if (pthe < i - 2) break;
      if (solve(game - 1, my - 1, he, ptmy - i, pthe - i + 2)) {
        par[game][my][he][ptmy][pthe] = {i, i - 2};
        return r = 1;
      }
    }
  }
  if (he && (game < 4 || game == 4 && my < he)) {
    for (int i = 0, ThxDem = tot[game] - 1; i < ThxDem; ++i) {
      if (ptmy < i || pthe < tot[game]) break;
      if (solve(game - 1, my, he - 1, ptmy - i, pthe - tot[game])) {
        par[game][my][he][ptmy][pthe] = {i, tot[game]};
        return r = 1;
      }
    }
    for (int i = tot[game] + 1, ThxDem = pthe + 1; i < ThxDem; ++i) {
      if (ptmy < i - 2) break;
      if (solve(game - 1, my, he - 1, ptmy - i + 2, pthe - i)) {
        par[game][my][he][ptmy][pthe] = {i - 2, i};
        return r = 1;
      }
    }
  }
  return r = 0;
}
bool cmp(pair<int, int> &x, pair<int, int> &y) {
  if (max(x.first, x.second) < 25) return 0;
  if (max(y.first, y.second) < 25) return 1;
  if (x.first > x.second) {
    if (y.first > y.second)
      return max(x.first, x.second) > max(y.first, y.second);
    return 1;
  }
  if (y.first < y.second)
    return max(x.first, x.second) > max(y.first, y.second);
  return 0;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  for (int i = 0, ThxDem = 5; i < ThxDem; ++i)
    for (int j = 0, ThxDem = 4; j < ThxDem; ++j)
      for (int rr = 0, ThxDem = 4; rr < ThxDem; ++rr)
        for (int k = 0, ThxDem = 201; k < ThxDem; ++k)
          for (int l = 0, ThxDem = 201; l < ThxDem; ++l)
            par[i][j][rr][k][l] = {-1, -1};
  int t;
  cin >> t;
  while (t--) {
    int x, y, i;
    cin >> x >> y;
    for (i = 5; i >= 0; i--) {
      if (solve(am[i], pts[i].first, pts[i].second, x, y)) break;
    }
    if (i >= 0) {
      cout << pts[i].first << ":" << pts[i].second << endl;
      int game = am[i], my = pts[i].first, he = pts[i].second, ptmy = x,
          pthe = y;
      vector<pair<int, int> > ans;
      while (game >= 0) {
        pair<int, int> now = par[game][my][he][ptmy][pthe];
        ans.push_back(now);
        game--;
        my -= now.first > now.second;
        he -= now.second > now.first;
        ptmy -= now.first;
        pthe -= now.second;
      }
      sort(ans.begin(), ans.end(), cmp);
      if (ans.size() > 3) swap(ans[pts[i].first], ans[pts[i].first - 1]);
      for (auto x : ans) cout << x.first << ":" << x.second << " ";
      cout << "\n";
    } else {
      cout << "Impossible" << endl;
    }
  }
}
