#include <bits/stdc++.h>
using namespace std;
int ds[205][205][5][5];
int dp(int a, int b, int w1, int w2) {
  if (w1 < 0 || w2 < 0 || a < 0 || b < 0) return 0;
  if (w1 == 0 && w2 == 0) {
    if (a == 0 && b == 0)
      return 1;
    else
      return 0;
  }
  if (ds[a][b][w1][w2] != -1) return ds[a][b][w1][w2];
  int &x = ds[a][b][w1][w2];
  x = 0;
  for (int i = 0; i < 24; i++) {
    x |= dp(a - 25, b - i, w1 - 1, w2);
    if (x == 1) return 1;
  }
  for (int i = 26; i <= a; i++) {
    x |= dp(a - i, b - i + 2, w1 - 1, w2);
    if (x == 1) return 1;
  }
  for (int i = 0; i < 24; i++) {
    x |= dp(a - i, b - 25, w1, w2 - 1);
    if (x == 1) return 1;
  }
  for (int i = 26; i <= b; i++) {
    x |= dp(a - i + 2, b - i, w1, w2 - 1);
    if (x == 1) return 1;
  }
  return 0;
}
int flip = 0;
int print_sol(int x, int y, int a, int b) {
  vector<pair<int, int> > v;
  int w1, w2;
  w1 = x;
  w2 = y;
  if (x == 2)
    v.push_back({3, 2});
  else
    v.push_back({x, y});
  while (1) {
    if (w1 == 0 && w2 == 0) break;
    int flag = 0;
    for (int j = 0; j < 24; j++) {
      int x1 = dp(a - 25, b - j, w1 - 1, w2);
      if (x1 == 1) {
        a -= 25;
        b -= j;
        w1--;
        flag = 1;
        v.push_back({25, j});
        break;
      }
    }
    if (flag == 1) continue;
    for (int i = 26; i <= a; i++) {
      int x1 = dp(a - i, b - i + 2, w1 - 1, w2);
      if (x1 == 1) {
        a -= i;
        b -= i - 2;
        w1--;
        flag = 1;
        v.push_back({i, i - 2});
        break;
      }
    }
    if (flag == 1) continue;
    for (int j = 0; j < 24; j++) {
      int x1 = dp(a - j, b - 25, w1, w2 - 1);
      if (x1 == 1) {
        a -= j;
        b -= 25;
        w2--;
        flag = 1;
        v.push_back({j, 25});
        break;
      }
    }
    if (flag == 1) continue;
    for (int i = 26; i <= b; i++) {
      int x1 = dp(a - i + 2, b - i, w1, w2 - 1);
      if (x1 == 1) {
        a -= i - 2;
        b -= i;
        w2--;
        flag = 1;
        v.push_back({i - 2, i});
        break;
      }
    }
  }
  if (flip == 1) {
    cout << v[0].second << ":" << v[0].first << "\n";
  } else {
    cout << v[0].first << ":" << v[0].second << "\n";
  }
  for (int i = 1; i < v.size(); i++) {
    if (flip == 1)
      cout << v[v.size() - i].second << ":" << v[v.size() - i].first;
    else
      cout << v[v.size() - i].first << ":" << v[v.size() - i].second;
    cout << " ";
  }
}
int find_sol(int p1, int p2, int a, int b) {
  if (p1 == 3 && p2 == 2) {
    for (int j = 0; j <= 13; j++) {
      int ans = dp(a - 15, b - j, 2, 2);
      if (ans == 1) {
        print_sol(2, 2, a - 15, b - j);
        if (flip == 0)
          cout << "15:" << j << "\n";
        else
          cout << j << ":15\n";
        return 1;
      }
    }
    for (int j = 16; j <= a; j++) {
      int ans = dp(a - j, b - j + 2, 2, 2);
      if (ans == 1) {
        print_sol(2, 2, a - j, b - j + 2);
        if (flip == 0)
          cout << j << ":" << j - 2 << "\n";
        else
          cout << j - 2 << ":" << j << "\n";
        return 1;
      }
    }
    return 0;
  }
  int x = dp(a, b, p1, p2);
  if (x == 1) {
    print_sol(p1, p2, a, b);
    cout << '\n';
    return 1;
  }
  return 0;
}
int solve(int a, int b) {
  for (int i = 0; i <= 2; i++) {
    int x = find_sol(3, i, a, b);
    if (x == 1) return 0;
  }
  flip = 1;
  for (int i = 2; i >= 0; i--) {
    int x = find_sol(3, i, b, a);
    if (x == 1) return 0;
  }
  cout << "Impossible\n";
  return 0;
}
int main() {
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  memset(ds, -1, sizeof(ds));
  int t;
  cin >> t;
  while (t--) {
    flip = 0;
    int a, b;
    cin >> a >> b;
    solve(a, b);
  }
  return 0;
}
