#include <bits/stdc++.h>
int a, b, i, j, x, y, ch, P[202], Q[202], X[202], Y[202];
bool ran(int A, int B, int C) {
  if (A <= B && B <= C)
    return true;
  else
    return false;
}
int main() {
  for (i = 0; i <= 23; i++) X[i] = 25, Y[i] = i;
  for (i = 24; i < 200; i++) {
    X[i] = i + 2;
    Y[i] = i;
  }
  for (i = 0; i <= 13; i++) P[i] = 15, Q[i] = i;
  for (i = 14; i < 200; i++) P[i] = i + 2, Q[i] = i;
  int T;
  scanf("%d", &T);
  while (T--) {
    scanf("%d%d", &a, &b);
    ch = 0;
    for (i = 0; i < 200; i++) {
      x = a - X[i];
      y = b - Y[i];
      if (x == 50 && ran(0, y, 46)) {
        ch = 1;
        puts("3:0");
        printf("%d:%d %d:%d %d:%d\n", X[i], Y[i], 25, y / 2, 25, y - y / 2);
        break;
      }
    }
    for (i = 0; ch == 0 && i < 200; i++) {
      x = a - X[i];
      y = b - Y[i];
      if (ran(50, x, 73) && ran(25, y, 71)) {
        ch = 1;
        puts("3:1");
        y -= 25;
        printf("%d:%d %d:%d %d:%d %d:%d\n", x - 50, 25, X[i], Y[i], 25, y / 2,
               25, y - y / 2);
        break;
      }
      x = a - Y[i];
      y = b - X[i];
      if (x == 75 && ran(0, y, 69)) {
        ch = 1;
        puts("3:1");
        printf("%d:%d %d:%d %d:%d %d:%d\n", 25, (y + 1) / 3, Y[i], X[i], 25,
               (y + 1) / 3, 25, y - (y + 1) / 3 * 2);
        break;
      }
    }
    for (i = 0; ch == 0 && i < 200; i++) {
      x = a - X[i];
      y = b - Y[i];
      if (ran(40, x, 86) && ran(50, y, 86)) {
        ch = 1;
        puts("3:2");
        y -= 50;
        x -= 40;
        j = 0;
        while (1) {
          if (ran(0, y - j, 23) && ran(0, j, 13)) break;
          j++;
        }
        printf("%d:%d %d:%d %d:%d %d:%d %d:%d\n", x / 2, 25, x - x / 2, 25,
               X[i], Y[i], 25, y - j, 15, j);
        break;
      }
      x = a - Y[i];
      y = b - X[i];
      if (ran(65, x, 88) && ran(25, y, 84)) {
        ch = 1;
        puts("3:2");
        x -= 65;
        y -= 25;
        j = 0;
        while (1) {
          if (ran(0, y - j, 46) && ran(0, j, 13)) break;
          j++;
        }
        printf("%d:%d %d:%d %d:%d %d:%d %d:%d\n", x, 25, Y[i], X[i], 25,
               (y - j) / 2, 25, (y - j) - (y - j) / 2, 15, j);
        break;
      }
    }
    for (i = 0; ch == 0 && i < 200; i++) {
      x = a - P[i];
      y = b - Q[i];
      if (ran(50, x, 96) && ran(50, y, 96)) {
        ch = 1;
        puts("3:2");
        y -= 50;
        x -= 50;
        printf("%d:%d %d:%d %d:%d %d:%d %d:%d\n", x / 2, 25, x - x / 2, 25, 25,
               y / 2, 25, y - y / 2, P[i], Q[i]);
        break;
      }
    }
    for (i = 0; ch == 0 && i < 200; i++) {
      x = a - Y[i];
      y = b - X[i];
      if (ran(50, x, 86) && ran(40, y, 86)) {
        ch = 1;
        puts("2:3");
        y -= 40;
        x -= 50;
        j = 0;
        while (1) {
          if (ran(0, x - j, 23) && ran(0, j, 13)) break;
          j++;
        }
        printf("%d:%d %d:%d %d:%d %d:%d %d:%d\n", 25, y - y / 2, 25, y / 2,
               Y[i], X[i], x - j, 25, j, 15);
        break;
      }
      x = a - X[i];
      y = b - Y[i];
      if (ran(25, x, 84) && ran(65, y, 88)) {
        ch = 1;
        puts("2:3");
        y -= 65;
        x -= 25;
        j = 0;
        while (1) {
          if (ran(0, x - j, 46) && ran(0, j, 13)) break;
          j++;
        }
        printf("%d:%d %d:%d %d:%d %d:%d %d:%d\n", 25, y, X[i], Y[i],
               (x - j) / 2, 25, (x - j) - (x - j) / 2, 25, j, 15);
        break;
      }
    }
    for (i = 0; ch == 0 && i < 200; i++) {
      x = a - Q[i];
      y = b - P[i];
      if (ran(50, x, 96) && ran(50, y, 96)) {
        ch = 1;
        puts("2:3");
        y -= 50;
        x -= 50;
        printf("%d:%d %d:%d %d:%d %d:%d %d:%d\n", 25, y - y / 2, 25, y / 2,
               x / 2, 25, x - x / 2, 25, Q[i], P[i]);
        break;
      }
    }
    for (i = 0; i < 200 && ch == 0; i++) {
      x = a - Y[i];
      y = b - X[i];
      if (ran(50, y, 73) && ran(25, x, 71)) {
        ch = 1;
        puts("1:3");
        x -= 25;
        printf("%d:%d %d:%d %d:%d %d:%d\n", 25, y - 50, Y[i], X[i], x / 2, 25,
               x - x / 2, 25);
        break;
      }
      x = a - X[i];
      y = b - Y[i];
      if (ran(0, x, 69) && y == 75) {
        ch = 1;
        puts("1:3");
        printf("%d:%d %d:%d %d:%d %d:%d\n", X[i], Y[i], (x + 1) / 3, 25,
               (x + 1) / 3, 25, x - (x + 1) / 3 * 2, 25);
        break;
      }
    }
    for (i = 0; i < 200 && ch == 0; i++) {
      x = a - Y[i];
      y = b - X[i];
      if (y == 50 && ran(0, x, 46)) {
        ch = 1;
        puts("0:3");
        printf("%d:%d %d:%d %d:%d\n", Y[i], X[i], x / 2, 25, x - x / 2, 25);
        break;
      }
    }
    if (ch == 0) {
      puts("Impossible");
    }
  }
}
