#include <bits/stdc++.h>
using namespace std;
int m;
bool dp[205][205][4][4][2];
int pre[205][205][4][4][2][5];
void hukugen(int a, int b, int c, int d, int e, int add, bool added) {
  printf("%d:%d\n", c, d);
  vector<pair<int, int> > vec;
  while (a + b != 0) {
    int na = pre[a][b][c][d][e][0];
    int nb = pre[a][b][c][d][e][1];
    int nc = pre[a][b][c][d][e][2];
    int nd = pre[a][b][c][d][e][3];
    int ne = pre[a][b][c][d][e][4];
    vec.push_back(make_pair(a - na, b - nb));
    a = na;
    b = nb;
    c = nc;
    d = nd;
    e = ne;
  }
  if (added) {
    for (int i = 0; i < vec.size(); i++) {
      if (abs(vec[i].first - vec[i].second) == 2) {
        vec[i].first += add;
        vec[i].second += add;
        break;
      }
    }
  }
  reverse(vec.begin(), vec.end());
  for (int i = 0; i < vec.size(); i++)
    printf("%d:%d%c", vec[i].first, vec[i].second,
           (i + 1 == vec.size() ? '\n' : ' '));
}
int main() {
  cin >> m;
  dp[0][0][0][0][0] = 1;
  for (int i = 0; i < 205; i++) {
    for (int j = 0; j < 205; j++) {
      for (int k = 0; k < 3; k++) {
        for (int l = 0; l < 3; l++) {
          for (int x = 0; x < 2; x++) {
            if (!dp[i][j][k][l][x]) continue;
            {
              for (int w = 0; w <= 23 - 10 * (k + l == 4); w++) {
                dp[i + 25 - 10 * (k + l == 4)][j + w][k + 1][l]
                  [(x || (w == 23 - 10 * (k + l == 4)))] = 1;
                pre[i + 25 - 10 * (k + l == 4)][j + w][k + 1][l]
                   [(x || (w == 23 - 10 * (k + l == 4)))][0] = i;
                pre[i + 25 - 10 * (k + l == 4)][j + w][k + 1][l]
                   [(x || (w == 23 - 10 * (k + l == 4)))][1] = j;
                pre[i + 25 - 10 * (k + l == 4)][j + w][k + 1][l]
                   [(x || (w == 23 - 10 * (k + l == 4)))][2] = k;
                pre[i + 25 - 10 * (k + l == 4)][j + w][k + 1][l]
                   [(x || (w == 23 - 10 * (k + l == 4)))][3] = l;
                pre[i + 25 - 10 * (k + l == 4)][j + w][k + 1][l]
                   [(x || (w == 23 - 10 * (k + l == 4)))][4] = x;
              }
            }
            {
              for (int w = 0; w <= 23 - 10 * (k + l == 4); w++) {
                dp[i + w][j + 25 - 10 * (k + l == 4)][k][l + 1]
                  [(x || (w == 23 - 10 * (k + l == 4)))] = 1;
                pre[i + w][j + 25 - 10 * (k + l == 4)][k][l + 1]
                   [(x || (w == 23 - 10 * (k + l == 4)))][0] = i;
                pre[i + w][j + 25 - 10 * (k + l == 4)][k][l + 1]
                   [(x || (w == 23 - 10 * (k + l == 4)))][1] = j;
                pre[i + w][j + 25 - 10 * (k + l == 4)][k][l + 1]
                   [(x || (w == 23 - 10 * (k + l == 4)))][2] = k;
                pre[i + w][j + 25 - 10 * (k + l == 4)][k][l + 1]
                   [(x || (w == 23 - 10 * (k + l == 4)))][3] = l;
                pre[i + w][j + 25 - 10 * (k + l == 4)][k][l + 1]
                   [(x || (w == 23 - 10 * (k + l == 4)))][4] = x;
              }
            }
          }
        }
      }
    }
  }
  while (m--) {
    int aa, bb;
    cin >> aa >> bb;
    for (int dif = 3; dif >= -3; dif--) {
      for (int a = 0; a <= 3; a++) {
        int b = a - dif;
        if (max(a, b) == 3 && a >= 0 && b >= 0 && a != b) {
          if (dp[aa][bb][a][b][0]) {
            hukugen(aa, bb, a, b, 0, 0, false);
            goto nxt;
          } else {
            for (int gen = min(aa, bb); gen >= 0; gen--) {
              if (dp[aa - gen][bb - gen][a][b][1]) {
                hukugen(aa - gen, bb - gen, a, b, 1, gen, true);
                goto nxt;
              }
            }
          }
        }
      }
    }
    puts("Impossible");
  nxt:;
  }
}
