#include <bits/stdc++.h>
using namespace std;
int dp[205][205][4][4];
vector<pair<int, int> > ans[205][205][4][4];
int awin[] = {3, 3, 3, 2, 1, 0}, bwin[] = {0, 1, 2, 3, 3, 3};
int main() {
  dp[0][0][0][0] = 1;
  for (int i = 0; i <= 200; i++) {
    for (int j = 0; j <= 200; j++) {
      for (int x = 0; x <= 2; x++) {
        for (int y = 0; y <= 2; y++) {
          if (!dp[i][j][x][y]) continue;
          int mx;
          if (x == 2 && y == 2)
            mx = 15;
          else
            mx = 25;
          for (int c = 0; c <= mx - 2; c++) {
            if (i + mx <= 200 && j + c <= 200 && !dp[i + mx][j + c][x + 1][y])
              dp[i + mx][j + c][x + 1][y] = 1,
                                    ans[i + mx][j + c][x + 1][y] =
                                        ans[i][j][x][y],
                                    ans[i + mx][j + c][x + 1][y].push_back(
                                        {mx, c});
            if (i + c <= 200 && j + mx <= 200 && !dp[i + c][j + mx][x][y + 1])
              dp[i + c][j + mx][x][y + 1] = 1,
                                       ans[i + c][j + mx][x][y + 1] =
                                           ans[i][j][x][y],
                                       ans[i + c][j + mx][x][y + 1].push_back(
                                           {c, mx});
          }
          for (int c = mx - 1; c <= 200; c++) {
            if (c + j + 2 <= 200 && i + c <= 200 &&
                !dp[i + c][j + c + 2][x][y + 1])
              dp[i + c][j + c + 2][x][y + 1] = 1,
                                          ans[i + c][j + c + 2][x][y + 1] =
                                              ans[i][j][x][y],
                                          ans[i + c][j + c + 2][x][y + 1]
                                              .push_back({c, c + 2});
            if (c + i + 2 <= 200 && c + j <= 200 &&
                !dp[i + c + 2][j + c][x + 1][y])
              dp[i + c + 2][j + c][x + 1][y] = 1,
                                       ans[i + c + 2][j + c][x + 1][y] =
                                           ans[i][j][x][y],
                                       ans[i + c + 2][j + c][x + 1][y]
                                           .push_back({c + 2, c});
          }
        }
      }
    }
  }
  int t;
  scanf("%d", &t);
  while (t--) {
    int n, m, flag = 0;
    scanf("%d%d", &n, &m);
    for (int i = 0; i < 6; i++) {
      if (dp[n][m][awin[i]][bwin[i]]) {
        printf("%d:%d\n", awin[i], bwin[i]);
        for (int j = 0; j < ans[n][m][awin[i]][bwin[i]].size(); j++)
          printf("%d:%d ", ans[n][m][awin[i]][bwin[i]][j].first,
                 ans[n][m][awin[i]][bwin[i]][j].second);
        printf("\n");
        flag = 1;
        break;
      }
    }
    if (!flag) printf("Impossible\n");
  }
  return 0;
}
