#include <bits/stdc++.h>
using namespace std;
int dp[6][500][500][6];
int pr[6][500][500][6];
vector<int> an;
void rec(int r, int a, int b, int w) {
  an.push_back(1000 * a + b);
  if (r == 0) return;
  int tmp = pr[r][a][b][w];
  if (a - tmp / 1000 < b - tmp % 1000)
    rec(r - 1, tmp / 1000, tmp % 1000, w);
  else
    rec(r - 1, tmp / 1000, tmp % 1000, w - 1);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  for (int r = 0; r < 6; r++) {
    for (int i = 0; i < 202; i++)
      for (int j = 0; j < 202; j++)
        for (int w = 0; w < 5; w++) dp[r][i][j][w] = 0;
  }
  dp[0][0][0][0] = 1;
  for (int r = 0; r <= 3; r++) {
    for (int a = 0; a < 201; a++) {
      for (int b = 0; b < 201; b++) {
        for (int w = 0; w < 3; w++) {
          if (dp[r][a][b][w] == 0) continue;
          if (r - w >= 3) continue;
          for (int i = 0; i <= 23; i++) {
            dp[r + 1][a + 25][b + i][w + 1] = 1;
            pr[r + 1][a + 25][b + i][w + 1] = a * 1000 + b;
          }
          for (int i = 26; i <= 202; i++) {
            dp[r + 1][a + i][b + i - 2][w + 1] = 1;
            pr[r + 1][a + i][b + i - 2][w + 1] = a * 1000 + b;
          }
          for (int i = 0; i <= 23; i++) {
            dp[r + 1][a + i][b + 25][w] = 1;
            pr[r + 1][a + i][b + 25][w] = a * 1000 + b;
          }
          for (int i = 26; i <= 202; i++) {
            dp[r + 1][a + i - 2][b + i][w] = 1;
            pr[r + 1][a + i - 2][b + i][w] = a * 1000 + b;
          }
        }
      }
    }
  }
  int r = 4;
  for (int a = 0; a < 201; a++) {
    for (int b = 0; b < 201; b++) {
      for (int w = 0; w < 3; w++) {
        if (dp[r][a][b][w] == 0) continue;
        if (r - w >= 3) continue;
        for (int i = 0; i <= 13; i++) {
          dp[r + 1][a + 15][b + i][w + 1] = 1;
          pr[r + 1][a + 15][b + i][w + 1] = a * 1000 + b;
        }
        for (int i = 16; i <= 202; i++) {
          dp[r + 1][a + i][b + i - 2][w + 1] = 1;
          pr[r + 1][a + i][b + i - 2][w + 1] = a * 1000 + b;
        }
        for (int i = 0; i <= 13; i++) {
          dp[r + 1][a + i][b + 15][w] = 1;
          pr[r + 1][a + i][b + 15][w] = a * 1000 + b;
        }
        for (int i = 16; i <= 202; i++) {
          dp[r + 1][a + i - 2][b + i][w] = 1;
          pr[r + 1][a + i - 2][b + i][w] = a * 1000 + b;
        }
      }
    }
  }
  int m;
  cin >> m;
  for (int i = 0; i < m; i++) {
    int a, b;
    cin >> a >> b;
    int best = -100;
    int bestr;
    if (dp[3][a][b][0]) {
      best = 0;
      bestr = 3;
    }
    if (dp[4][a][b][1]) {
      best = 1;
      bestr = 4;
    }
    if (dp[5][a][b][2]) {
      best = 2;
      bestr = 5;
    }
    if (dp[5][a][b][3]) {
      best = 3;
      bestr = 5;
    }
    if (dp[4][a][b][3]) {
      best = 3;
      bestr = 4;
    }
    if (dp[3][a][b][3]) {
      best = 3;
      bestr = 3;
    }
    if (best < -1) {
      cout << "Impossible" << endl;
    } else {
      cout << best << ":" << bestr - best << endl;
      an = vector<int>(0);
      rec(bestr, a, b, best);
      for (int iii = an.size() - 1; iii > 0; iii--) {
        int tmp = an[iii - 1] - an[iii];
        cout << tmp / 1000 << ":" << tmp % 1000 << " ";
      }
      cout << endl;
    }
  }
}
