#include <bits/stdc++.h>
using namespace std;
const long long N = 201;
int dp[N][N][5][5][2];
struct trans {
  long long a, b, s1, s2, init;
  trans() {
    a = 0;
    b = 0;
    s1 = 0;
    s2 = 0;
    init = 0;
  }
};
trans transition[N][N][5][5][2];
int calc(long long a, long long b, long long s1, long long s2, long long init) {
  if (dp[a][b][s1][s2][init] != -1) {
    return dp[a][b][s1][s2][init];
  }
  bool f1 = true;
  bool f2 = true;
  if (init == 1) {
    if (s1 > s2) {
      f2 = false;
    } else {
      f1 = false;
    }
  }
  long long game_no = s1 + s2;
  if (game_no == 5) {
    if (s1 && f1) {
      if (a >= 15) {
        for (long long i = 0; i <= min(13ll, b); i++) {
          long long aa = a - 15;
          long long bb = b - i;
          long long res = calc(aa, bb, s1 - 1, s2, 0);
          if (res) {
            auto& tran = transition[a][b][s1][s2][init];
            tran.a = aa;
            tran.b = bb;
            tran.s1 = s1 - 1;
            tran.s2 = s2;
            tran.init = 0;
            return dp[a][b][s1][s2][init] = 1;
          }
        }
        for (long long i = 16; i <= a; i++) {
          long long aa = a - i;
          long long bb = b - i + 2;
          if (bb < 0) break;
          long long res = calc(aa, bb, s1 - 1, s2, 0);
          if (res) {
            auto& tran = transition[a][b][s1][s2][init];
            tran.a = aa;
            tran.b = bb;
            tran.s1 = s1 - 1;
            tran.s2 = s2;
            tran.init = 0;
            return dp[a][b][s1][s2][init] = 1;
          }
        }
      }
    }
    if (s2 && f2) {
      if (b >= 15) {
        for (long long i = 0; i <= min(13ll, a); i++) {
          long long bb = b - 15;
          long long aa = a - i;
          long long res = calc(aa, bb, s1, s2 - 1, 0);
          if (res) {
            auto& tran = transition[a][b][s1][s2][init];
            tran.a = aa;
            tran.b = bb;
            tran.s1 = s1;
            tran.s2 = s2 - 1;
            tran.init = 0;
            return dp[a][b][s1][s2][init] = 1;
          }
        }
        for (long long i = 16; i <= b; i++) {
          long long bb = b - i;
          long long aa = a - i + 2;
          if (aa < 0) break;
          long long res = calc(aa, bb, s1, s2 - 1, 0);
          if (res) {
            auto& tran = transition[a][b][s1][s2][init];
            tran.a = aa;
            tran.b = bb;
            tran.s1 = s1;
            tran.s2 = s2 - 1;
            tran.init = 0;
            return dp[a][b][s1][s2][init] = 1;
          }
        }
      }
    }
  } else {
    if (s1 && f1) {
      if (a >= 25) {
        for (long long i = 0; i <= min(23ll, b); i++) {
          long long aa = a - 25;
          long long bb = b - i;
          long long res = calc(aa, bb, s1 - 1, s2, 0);
          if (res) {
            auto& tran = transition[a][b][s1][s2][init];
            tran.a = aa;
            tran.b = bb;
            tran.s1 = s1 - 1;
            tran.s2 = s2;
            tran.init = 0;
            return dp[a][b][s1][s2][init] = 1;
          }
        }
        for (long long i = 26; i <= a; i++) {
          long long aa = a - i;
          long long bb = b - i + 2;
          if (bb < 0) break;
          long long res = calc(aa, bb, s1 - 1, s2, 0);
          if (res) {
            auto& tran = transition[a][b][s1][s2][init];
            tran.a = aa;
            tran.b = bb;
            tran.s1 = s1 - 1;
            tran.s2 = s2;
            tran.init = 0;
            return dp[a][b][s1][s2][init] = 1;
          }
        }
      }
    }
    if (s2 && f2) {
      if (b >= 25) {
        for (long long i = 0; i <= min(23ll, a); i++) {
          long long bb = b - 25;
          long long aa = a - i;
          long long res = calc(aa, bb, s1, s2 - 1, 0);
          if (res) {
            auto& tran = transition[a][b][s1][s2][init];
            tran.a = aa;
            tran.b = bb;
            tran.s1 = s1;
            tran.s2 = s2 - 1;
            tran.init = 0;
            return dp[a][b][s1][s2][init] = 1;
          }
        }
        for (long long i = 26; i <= b; i++) {
          long long bb = b - i;
          long long aa = a - i + 2;
          if (aa < 0) break;
          long long res = calc(aa, bb, s1, s2 - 1, 0);
          if (res) {
            auto& tran = transition[a][b][s1][s2][init];
            tran.a = aa;
            tran.b = bb;
            tran.s1 = s1;
            tran.s2 = s2 - 1;
            tran.init = 0;
            return dp[a][b][s1][s2][init] = 1;
          }
        }
      }
    }
  }
  return dp[a][b][s1][s2][init] = 0;
}
const long long inf = 1e18;
void print(long long a, long long b, long long s1, long long s2,
           long long init) {
  auto& trans = transition[a][b][s1][s2][init];
  if (trans.a == inf) {
    return;
  }
  print(trans.a, trans.b, trans.s1, trans.s2, trans.init);
  long long aa = a - trans.a;
  long long bb = b - trans.b;
  cout << aa << ":" << bb << " ";
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  for (long long i = 0; i < N; i++) {
    for (long long j = 0; j < N; j++) {
      for (long long k = 0; k < 5; k++) {
        for (long long l = 0; l < 5; l++) {
          dp[i][j][k][l][0] = dp[i][j][k][l][1] = -1;
        }
      }
    }
  }
  dp[0][0][0][0][0] = dp[0][0][0][0][1] = 1;
  transition[0][0][0][0][0].a = transition[0][0][0][0][1].a = inf;
  long long t;
  cin >> t;
  while (t--) {
    long long a, b;
    cin >> a >> b;
    bool flag = 0;
    for (long long i = 0; i <= 2; i++) {
      if (calc(a, b, 3, i, 1)) {
        cout << 3 << ":" << i << endl;
        print(a, b, 3, i, 1);
        cout << endl;
        flag = 1;
        break;
      }
    }
    if (!flag) {
      for (long long i = 2; i >= 0; i--) {
        if (calc(a, b, i, 3, 1)) {
          cout << i << ":" << 3 << endl;
          print(a, b, i, 3, 1);
          cout << endl;
          flag = 1;
          break;
        }
      }
    }
    if (!flag) {
      cout << "Impossible" << endl;
    }
  }
}
