#include <bits/stdc++.h>
using namespace std;
const int N = 20;
int ans[N][2];
void update(int w, int l, int L, int R, int a, int b) {
  int st = 0;
  for (int i = L; i <= R; i++) {
    if (i < l)
      st = 1;
    else
      st = 0;
    int val = min(st == 1 ? a : b, ans[i][st] - 2);
    ans[i][1 - st] = val;
    if (st == 1)
      a -= val;
    else
      b -= val;
  }
}
int judge(int a, int b, int w, int l) {
  if (w < l) {
    swap(a, b);
    swap(w, l);
  }
  int space_a = 0;
  int space_b = 0;
  for (int i = 0; i < l + w; i++) {
    ans[i][0] = ans[i][1] = 0;
    int st = (i < l) ? 1 : 0;
    ans[i][st] = i == 4 ? 15 : 25;
    if (st == 1) {
      b -= ans[i][st];
      space_a += ans[i][st] - 2;
    } else {
      a -= ans[i][st];
      space_b += ans[i][st] - 2;
    }
  }
  int min_a = 0, min_b = 0;
  if (w) min_b = 23;
  if (l) min_a = 23;
  if (w + l == 5) min_b = 13;
  if (a < 0 || b < 0) return 0;
  if (space_a >= a && space_b >= b) {
    update(w, l, 0, w + l - 1, a, b);
    return 1;
  } else if (min_a != 0 && a >= min_a && space_b >= b - min(b, (a - min_a)) &&
             space_a - min_a >= (a - min_a) - min(b, a - min_a)) {
    a -= min_a;
    ans[0][0] = min_a;
    int val = min(a, b);
    ans[0][0] += val;
    ans[0][1] += val;
    a -= val;
    b -= val;
    update(w, l, 1, w + l - 1, a, b);
    return 1;
  } else if (min_b != 0 && b >= min_b && space_a >= a - min(a, (b - min_b)) &&
             space_b - min_b >= (b - min_b) - min(a, (b - min_b))) {
    b -= min_b;
    ans[w + l - 1][1] = min_b;
    int val = min(a, b);
    ans[w + l - 1][0] += val;
    ans[w + l - 1][1] += val;
    a -= val;
    b -= val;
    update(w, l, 0, w + l - 2, a, b);
    return 1;
  }
  return 0;
}
int main() {
  int T;
  int a, b;
  scanf("%d", &T);
  while (T-- > 0) {
    int flag = 0;
    scanf("%d%d", &a, &b);
    for (int j = 3; j >= -3; j--) {
      if (j == 0) continue;
      int w, l;
      if (j > 0)
        w = 3, l = w - j;
      else
        l = 3, w = l + j;
      if (judge(a, b, w, l)) {
        printf("%d:%d\n", w, l);
        for (int i = 0; i < w + l; i++) {
          if (w < l) swap(ans[i][0], ans[i][1]);
          printf("%d:%d", ans[i][0], ans[i][1]);
          if (i == w + l - 1)
            printf("\n");
          else
            printf(" ");
        }
        flag = 1;
        break;
      }
    }
    if (!flag) printf("Impossible\n");
  }
  return 0;
}
