#include <bits/stdc++.h>
using namespace std;
const double Pi = acos(-1.0);
const int MAXN = 1e6 + 5;
int n, m, t;
int dp[205][205][4][4];
vector<pair<int, int> > ans[205][205][4][4];
int x[9] = {0, 3, 3, 3, 2, 1, 0};
int y[9] = {0, 0, 1, 2, 3, 3, 3};
void init() {
  dp[0][0][0][0] = 1;
  for (int i = 0; i <= 200; i++) {
    for (int j = 0; j <= 200; j++) {
      for (int k = 0; k <= 2; k++) {
        for (int l = 0; l <= 2; l++) {
          int maxm = 25;
          if (l + k == 4) maxm = 15;
          if (!dp[i][j][k][l]) continue;
          for (int q = 0; q <= maxm - 2; q++) {
            if (i + maxm <= 200 && j + q <= 200 &&
                !dp[i + maxm][j + q][k + 1][l]) {
              dp[i + maxm][j + q][k + 1][l] = 1;
              ans[i + maxm][j + q][k + 1][l] = ans[i][j][k][l];
              ans[i + maxm][j + q][k + 1][l].push_back({maxm, q});
            }
            if (j + maxm <= 200 && i + q <= 200 &&
                !dp[i + q][j + maxm][k][l + 1]) {
              dp[i + q][j + maxm][k][l + 1] = 1;
              ans[i + q][j + maxm][k][l + 1] = ans[i][j][k][l];
              ans[i + q][j + maxm][k][l + 1].push_back({q, maxm});
            }
          }
          for (int q = maxm + 1; q <= 200; q++) {
            if (i + q <= 200 && j + q - 2 <= 200 &&
                !dp[i + q][j + q - 2][k + 1][l]) {
              dp[i + q][j + q - 2][k + 1][l] = 1;
              ans[i + q][j + q - 2][k + 1][l] = ans[i][j][k][l];
              ans[i + q][j + q - 2][k + 1][l].push_back({q, q - 2});
            }
            if (j + q <= 200 && i + q - 2 <= 200 &&
                !dp[i + q - 2][j + q][k][l + 1]) {
              dp[i + q - 2][j + q][k][l + 1] = 1;
              ans[i + q - 2][j + q][k][l + 1] = ans[i][j][k][l];
              ans[i + q - 2][j + q][k][l + 1].push_back({q - 2, q});
            }
          }
        }
      }
    }
  }
}
int main() {
  init();
  cin >> n;
  for (int i = 1; i <= n; i++) {
    int a, b;
    cin >> a >> b;
    int flag = 0;
    for (int i = 1; i <= 6; i++) {
      if (dp[a][b][x[i]][y[i]]) {
        cout << x[i] << ':' << y[i] << endl;
        for (int j = 0; j < ans[a][b][x[i]][y[i]].size(); j++) {
          cout << ans[a][b][x[i]][y[i]][j].first << ':'
               << ans[a][b][x[i]][y[i]][j].second << ' ';
        }
        cout << endl;
        flag = 1;
        break;
      }
    }
    if (!flag) cout << "Impossible" << endl;
  }
}
