#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e2 + 7;
const int INF = 2.1e9;
const int MOD = 1e9 + 7;
int n, m, k;
int dp[4][4][maxn][maxn];
int sc[4][4][maxn][maxn], sx[4][4][maxn][maxn], sy[4][4][maxn][maxn];
int dfs(int x, int y, int a, int b) {
  assert(x < 4 && y < 4 && a >= 0 && b >= 0);
  int &ans = dp[x][y][a][b];
  if (ans != -6) return ans;
  if (x == 3 || y == 3) {
    if (!a && !b) return ans = 0;
    return ans = -INF;
  }
  ans = -INF;
  int T = (x + y == 4 ? 15 : 25), tmp;
  for (int i = 0; i <= T - 2; i++) {
    if (a < T || b < i) break;
    tmp = 1 + dfs(x + 1, y, a - T, b - i);
    if (tmp > ans) {
      ans = tmp;
      sc[x][y][a][b] = 1;
      sx[x][y][a][b] = T;
      sy[x][y][a][b] = i;
    }
  }
  for (int i = T + 1; i <= a; i++) {
    if (b < i - 2) break;
    tmp = 1 + dfs(x + 1, y, a - i, b - (i - 2));
    if (tmp > ans) {
      ans = tmp;
      sc[x][y][a][b] = 1;
      sx[x][y][a][b] = i;
      sy[x][y][a][b] = i - 2;
    }
  }
  for (int i = 0; i <= T - 2; i++) {
    if (a < i || b < T) break;
    tmp = -1 + dfs(x, y + 1, a - i, b - T);
    if (tmp > ans) {
      ans = tmp;
      sc[x][y][a][b] = -1;
      sx[x][y][a][b] = i;
      sy[x][y][a][b] = T;
    }
  }
  for (int i = T + 1; i <= b; i++) {
    if (a < i - 2) break;
    tmp = -1 + dfs(x, y + 1, a - (i - 2), b - i);
    if (tmp > ans) {
      ans = tmp;
      sc[x][y][a][b] = -1;
      sx[x][y][a][b] = i - 2;
      sy[x][y][a][b] = i;
    }
  }
  return ans;
}
stack<pair<int, int> > S;
void dfs2(int x, int y, int a, int b) {
  if (!a && !b) {
    printf("%d:%d\n", x, y);
    return;
  }
  int f = 0;
  if (sc[x][y][a][b] == 1) f = 1;
  dfs2(x + f, y + (1 - f), a - sx[x][y][a][b], b - sy[x][y][a][b]);
  S.push(make_pair(sx[x][y][a][b], sy[x][y][a][b]));
}
void solve(int a, int b) {
  int x = dfs(0, 0, a, b);
  if (x < -5)
    printf("Impossible");
  else {
    dfs2(0, 0, a, b);
    bool f = 0;
    while (!S.empty()) {
      pair<int, int> tmp = S.top();
      S.pop();
      if (f) putchar(' ');
      f = 1;
      printf("%d:%d", tmp.first, tmp.second);
    }
  }
  printf("\n");
}
int main() {
  for (int i = 0; i < 4; i++)
    for (int j = 0; j < 4; j++)
      for (int k = 0; k < maxn; k++)
        for (int l = 0; l < maxn; l++) dp[i][j][k][l] = -6;
  int T;
  cin >> T;
  while (T--) {
    int a, b;
    scanf("%d%d", &a, &b);
    solve(a, b);
  }
  return 0;
}
