#include <bits/stdc++.h>
using namespace std;
pair<int, int> f[205][205][16];
int p[] = {12, 13, 14, 11, 7, 3};
void dfs(int x, int y, int k) {
  if (k == 0) return;
  pair<int, int> e = f[x][y][k];
  int u = e.second >> 12, v = (e.second >> 4) & 255;
  dfs(u, v, e.second & 15);
  printf("%d:%d ", x - u, y - v);
}
int main() {
  int i, j, k, x, a, b, u, v;
  f[0][0][0] = pair<int, int>(1, 0);
  for (k = 1; k < 15; k++) {
    a = (k >> 2) & 3;
    b = k & 3;
    if (a + b == 5)
      u = 15;
    else
      u = 25;
    for (i = 0; i <= 200; i++) {
      for (j = 0; j <= 200; j++) {
        if (a && b != 3) {
          for (x = 0; x <= j; x++) {
            v = max(u, x + 2);
            if (v > i) break;
            if (f[i - v][j - x][k - 4].first) {
              f[i][j][k] =
                  pair<int, int>(1, ((i - v) << 12) | ((j - x) << 4) | (k - 4));
              break;
            }
          }
        }
        if (b && a != 3) {
          for (x = 0; x <= i; x++) {
            v = max(u, x + 2);
            if (v > j) break;
            if (f[i - x][j - v][k - 1].first) {
              f[i][j][k] =
                  pair<int, int>(1, ((i - x) << 12) | ((j - v) << 4) | (k - 1));
              break;
            }
          }
        }
      }
    }
  }
  scanf("%d", &k);
  while (k--) {
    scanf("%d%d", &u, &v);
    for (i = 0; i < 6; i++) {
      if (f[u][v][p[i]].first) break;
    }
    if (i == 6)
      puts("Impossible");
    else {
      if (i < 3)
        printf("3:%d\n", i);
      else
        printf("%d:3\n", 5 - i);
      dfs(u, v, p[i]);
      puts("");
    }
  }
  return 0;
}
