#include <bits/stdc++.h>
using namespace std;
pair<pair<int, int>, vector<pair<int, int>>> calc(
    int x, int y, vector<vector<vector<vector<int>>>> &dp,
    vector<vector<vector<vector<pair<pair<int, int>, pair<int, int>>>>>>
        &back) {
  int a = -1, b = -1;
  for (int i = 0; i < 3; i++) {
    if (dp[3][i][x][y] == 1) {
      a = 3;
      b = i;
      break;
    }
  }
  if (a == -1 || b == -1) {
    for (int i = 0; i < 3; i++) {
      if (dp[i][3][x][y] == 1) {
        a = i;
        b = 3;
      }
    }
  }
  if (a == -1 || b == -1) {
    return make_pair(make_pair(-1, -1), vector<pair<int, int>>());
  }
  int q1 = a;
  int q2 = b;
  int q3 = x;
  int q4 = y;
  vector<pair<int, int>> arr;
  while (q1 > 0 || q2 > 0) {
    arr.push_back(make_pair(q3, q4));
    pair<pair<int, int>, pair<int, int>> bb = back[q1][q2][q3][q4];
    q1 = bb.first.first;
    q2 = bb.first.second;
    q3 = bb.second.first;
    q4 = bb.second.second;
  }
  arr.push_back(make_pair(0, 0));
  reverse(arr.begin(), arr.end());
  vector<pair<int, int>> result;
  for (int i = 1; i < (int)arr.size(); i++) {
    int v1 = arr[i].first - arr[i - 1].first;
    int v2 = arr[i].second - arr[i - 1].second;
    result.push_back(make_pair(v1, v2));
  }
  return make_pair(make_pair(a, b), result);
}
int main() {
  ;
  ;
  vector<vector<vector<vector<int>>>> dp(
      4, vector<vector<vector<int>>>(
             4, vector<vector<int>>(201, vector<int>(201, 0))));
  vector<vector<vector<vector<pair<pair<int, int>, pair<int, int>>>>>> back(
      4, vector<vector<vector<pair<pair<int, int>, pair<int, int>>>>>(
             4, vector<vector<pair<pair<int, int>, pair<int, int>>>>(
                    201, vector<pair<pair<int, int>, pair<int, int>>>(201))));
  dp[0][0][0][0] = 1;
  for (int a = 0; a < 3; a++) {
    for (int b = 0; b < 3; b++) {
      int partSize = (a + b + 1 == 5) ? 15 : 25;
      for (int i = 0; i <= 200; i++) {
        for (int j = 0; j <= 200; j++) {
          if (dp[a][b][i][j] == 0) {
            continue;
          }
          int v1, v2;
          v1 = partSize;
          for (v2 = 0; v2 <= partSize - 2; v2++) {
            if (i + v1 <= 200 && j + v2 <= 200) {
              if (v1 > v2) {
                if (dp[a + 1][b][i + v1][j + v2] == 0) {
                  dp[a + 1][b][i + v1][j + v2] = 1;
                  back[a + 1][b][i + v1][j + v2] =
                      make_pair(make_pair(a, b), make_pair(i, j));
                }
              } else {
                if (dp[a][b + 1][i + v1][j + v2] == 0) {
                  dp[a][b + 1][i + v1][j + v2] = 1;
                  back[a][b + 1][i + v1][j + v2] =
                      make_pair(make_pair(a, b), make_pair(i, j));
                }
              }
            }
          }
          v2 = partSize;
          for (v1 = 0; v1 <= partSize - 2; v1++) {
            if (i + v1 <= 200 && j + v2 <= 200) {
              if (v1 > v2) {
                if (dp[a + 1][b][i + v1][j + v2] == 0) {
                  dp[a + 1][b][i + v1][j + v2] = 1;
                  back[a + 1][b][i + v1][j + v2] =
                      make_pair(make_pair(a, b), make_pair(i, j));
                }
              } else {
                if (dp[a][b + 1][i + v1][j + v2] == 0) {
                  dp[a][b + 1][i + v1][j + v2] = 1;
                  back[a][b + 1][i + v1][j + v2] =
                      make_pair(make_pair(a, b), make_pair(i, j));
                }
              }
            }
          }
          for (v1 = 26; v1 <= 200; v1++) {
            v2 = v1 - 2;
            if (i + v1 <= 200 && j + v2 <= 200) {
              if (v1 > v2) {
                if (dp[a + 1][b][i + v1][j + v2] == 0) {
                  dp[a + 1][b][i + v1][j + v2] = 1;
                  back[a + 1][b][i + v1][j + v2] =
                      make_pair(make_pair(a, b), make_pair(i, j));
                }
              } else {
                if (dp[a][b + 1][i + v1][j + v2] == 0) {
                  dp[a][b + 1][i + v1][j + v2] = 1;
                  back[a][b + 1][i + v1][j + v2] =
                      make_pair(make_pair(a, b), make_pair(i, j));
                }
              }
            }
          }
          for (v2 = 26; v2 <= 200; v2++) {
            v1 = v2 - 2;
            if (i + v1 <= 200 && j + v2 <= 200) {
              if (v1 > v2) {
                if (dp[a + 1][b][i + v1][j + v2] == 0) {
                  dp[a + 1][b][i + v1][j + v2] = 1;
                  back[a + 1][b][i + v1][j + v2] =
                      make_pair(make_pair(a, b), make_pair(i, j));
                }
              } else {
                if (dp[a][b + 1][i + v1][j + v2] == 0) {
                  dp[a][b + 1][i + v1][j + v2] = 1;
                  back[a][b + 1][i + v1][j + v2] =
                      make_pair(make_pair(a, b), make_pair(i, j));
                }
              }
            }
          }
        }
      }
    }
  }
  int t;
  cin >> t;
  for (int i = 0; i < t; i++) {
    int a, b;
    cin >> a >> b;
    auto res = calc(a, b, dp, back);
    if (res.first.first == -1) {
      cout << "Impossible" << endl;
    } else {
      cout << res.first.first << ":" << res.first.second << endl;
      for (pair<int, int> p : res.second) {
        cout << p.first << ":" << p.second << " ";
      }
      cout << endl;
    }
  }
  return 0;
}
