#include <bits/stdc++.h>
using namespace std;
int a, b;
int ans[5][2];
void rans() {
  for (int i = 0; i < 5; i++)
    for (int j = 0; j < 2; j++) ans[i][j] = -1;
}
bool check30() {
  if (a >= 75) {
    int orema = a - 75;
    int oremb = b;
    if (orema) {
      ans[0][0] = 25 + orema;
      ans[1][0] = 25;
      ans[2][0] = 25;
      oremb -= orema;
      if (oremb >= 23 && oremb <= 69) {
        ans[0][1] = 23 + orema;
        oremb -= 23;
        ans[1][1] = min(23, oremb);
        oremb -= ans[1][1];
        ans[2][1] = oremb;
        return true;
      }
    } else if (oremb <= 69) {
      for (int i = 0; i < 3; i++) {
        ans[i][0] = 25;
        ans[i][1] = min(23, oremb);
        oremb -= ans[i][1];
      }
      return true;
    }
  }
  rans();
  return false;
}
bool check31() {
  if (a >= 75 && b >= 25) {
    int orema = a - 75, oremb = b - 25;
    int rema = orema, remb = oremb;
    ans[0][0] = min(23, rema);
    rema -= ans[0][0];
    ans[0][1] = 25;
    for (int i = 1; i < 4; i++) {
      ans[i][0] = 25;
      ans[i][1] = min(23, remb);
      remb -= ans[i][1];
    }
    if (rema >= remb) {
      if (oremb >= rema) {
        ans[0][0] += rema;
        ans[0][1] += rema;
        rema -= remb;
        for (int i = 1; i < 4; i++) {
          int minrem = min(ans[i][1], rema);
          rema -= minrem;
          ans[i][1] -= minrem;
        }
        return true;
      }
    } else {
      if (orema >= remb) {
        ans[1][0] += remb;
        ans[1][1] += remb;
        remb -= rema;
        ans[0][0] -= remb;
        return true;
      }
    }
  }
  rans();
  return false;
}
bool check32() {
  if (a >= 65 && b >= 50) {
    int orema = a - 65, oremb = b - 50;
    int rema = orema, remb = oremb;
    for (int i = 0; i < 4; i++) {
      if (i & 1) {
        ans[i][0] = 25;
        ans[i][1] = min(remb, 23);
        remb -= ans[i][1];
      } else {
        ans[i][0] = min(rema, 23);
        ans[i][1] = 25;
        rema -= ans[i][0];
      }
    }
    ans[4][0] = 15;
    ans[4][1] = min(13, remb);
    remb -= ans[4][1];
    if (rema >= remb) {
      if (oremb >= rema) {
        ans[0][0] += rema;
        ans[0][1] += rema;
        rema -= remb;
        for (int i = 0; i < 5; i++) {
          if (i & 1) {
            int minrem = min(rema, ans[i][1]);
            rema -= minrem;
            ans[i][1] -= minrem;
          }
        }
        ans[4][1] -= rema;
        return true;
      }
    } else {
      if (orema >= remb) {
        ans[1][0] += remb;
        ans[1][1] += remb;
        remb -= rema;
        for (int i = 0; i < 5; i++) {
          if (!(i & 1)) {
            int minrem = min(remb, ans[i][0]);
            remb -= minrem;
            ans[i][0] -= minrem;
          }
        }
        return true;
      }
    }
  }
  rans();
  return false;
}
void printans(bool rev = false) {
  int sc[2] = {0, 0};
  for (int i = 0; i < 5; i++) {
    if (ans[i][0] == -1) break;
    if (ans[i][0] > ans[i][1])
      sc[0]++;
    else
      sc[1]++;
  }
  if (rev) swap(sc[0], sc[1]);
  cout << sc[0] << ":" << sc[1] << "\n";
  for (int i = 0; i < 5; i++) {
    if (ans[i][0] == -1) break;
    if (rev)
      cout << ans[i][1] << ":" << ans[i][0] << " ";
    else
      cout << ans[i][0] << ":" << ans[i][1] << " ";
  }
  cout << "\n";
}
int main() {
  ios::sync_with_stdio(0);
  int t;
  cin >> t;
  while (t--) {
    for (int i = 0; i < 5; i++) {
      for (int j = 0; j < 2; j++) ans[i][j] = -1;
    }
    cin >> a >> b;
    if (check30()) {
      printans();
      continue;
    }
    if (check31()) {
      printans();
      continue;
    }
    if (check32()) {
      printans();
      continue;
    }
    swap(a, b);
    if (check32()) {
      printans(true);
      continue;
    }
    if (check31()) {
      printans(true);
      continue;
    }
    if (check30()) {
      printans(true);
      continue;
    }
    cout << "Impossible\n";
  }
  return 0;
}
