#include <bits/stdc++.h>
using namespace std;
struct Score {
  int a, b;
  Score() {
    a = 0;
    b = 0;
  }
};
bool work30(int a, int b, int flag) {
  if (a < 75 || b > a - 6) return false;
  int inib = b;
  Score m1, m2, m3;
  m1.a = m2.a = m3.a = 25;
  a -= 75;
  if (b >= 23) {
    m1.b = 23;
    b -= 23;
  } else {
    m1.b = b;
    b = 0;
  }
  if (b >= 23) {
    m2.b = 23;
    b -= 23;
  } else {
    m2.b = b;
    b = 0;
  }
  if (b >= 23) {
    m3.b = 23;
    b -= 23;
  } else {
    m3.b = b;
    b = 0;
  }
  if (a == b) {
    m1.a += a;
    m1.b += a;
  } else if (a > b) {
    int t = a - b;
    if (m2.b + m3.b >= t) {
      int tmp = min(t, m2.b);
      m2.b -= tmp;
      t -= tmp;
      tmp = min(t, m3.b);
      m3.b -= tmp;
      t -= tmp;
      m1.a += a;
      m1.b += a;
    } else
      return false;
  } else
    return false;
  if (flag) {
    printf("3:0\n");
    printf("%d:%d %d:%d %d:%d\n", m1.a, m1.b, m2.a, m2.b, m3.a, m3.b);
  } else {
    printf("0:3\n");
    printf("%d:%d %d:%d %d:%d\n", m1.b, m1.a, m2.b, m2.a, m3.b, m3.a);
  }
  return true;
}
bool work31(int a, int b, bool flag) {
  if (a < 75 || b < 25) return false;
  int inib = b;
  Score m1, m2, m3, m4;
  m1.a = m2.a = m3.a = 25;
  a -= 75;
  m4.b = 25;
  b -= 25;
  if (b >= 23) {
    m1.b = 23;
    b -= 23;
  } else {
    m1.b = b;
    b = 0;
  }
  if (b >= 23) {
    m2.b = 23;
    b -= 23;
  } else {
    m2.b = b;
    b = 0;
  }
  if (b >= 23) {
    m3.b = 23;
    b -= 23;
  } else {
    m3.b = b;
    b = 0;
  }
  if (a >= 23) {
    m4.a = 23;
    a -= 23;
  } else {
    m4.a = a;
    a = 0;
  }
  if (a == b) {
    m1.a += a;
    m1.b += a;
  } else if (b > a) {
    int t = b - a;
    if (m4.a >= t) {
      m4.a -= t;
      m1.a += b;
      m1.b += b;
    } else
      return false;
  } else if (a > b) {
    int t = a - b;
    if (m1.b + m2.b + m3.b >= t) {
      int tmp = min(t, m1.b);
      m1.b -= tmp;
      t -= tmp;
      tmp = min(t, m2.b);
      m2.b -= tmp;
      t -= tmp;
      tmp = min(t, m3.b);
      m3.b -= tmp;
      t -= tmp;
      m4.a += a;
      m4.b += a;
    } else
      return false;
  } else
    return false;
  if (flag) {
    printf("3:1\n");
    printf("%d:%d %d:%d %d:%d %d:%d\n", m4.a, m4.b, m1.a, m1.b, m2.a, m2.b,
           m3.a, m3.b);
  } else {
    printf("1:3\n");
    printf("%d:%d %d:%d %d:%d %d:%d\n", m4.b, m4.a, m1.b, m1.a, m2.b, m2.a,
           m3.b, m3.a);
  }
  return true;
}
bool work32(int a, int b, bool flag) {
  if (a < 65 || b < 50) return false;
  int inib = b;
  Score m1, m2, m3, m4, m5;
  m1.a = m2.a = 25;
  m3.a = 15;
  a -= 65;
  m4.b = m5.b = 25;
  b -= 50;
  if (b >= 23) {
    m1.b = 23;
    b -= 23;
  } else {
    m1.b = b;
    b = 0;
  }
  if (b >= 23) {
    m2.b = 23;
    b -= 23;
  } else {
    m2.b = b;
    b = 0;
  }
  if (b >= 13) {
    m3.b = 13;
    b -= 13;
  } else {
    m3.b = b;
    b = 0;
  }
  if (a >= 23) {
    m4.a = 23;
    a -= 23;
  } else {
    m4.a = a;
    a = 0;
  }
  if (a >= 23) {
    m5.a = 23;
    a -= 23;
  } else {
    m5.a = a;
    a = 0;
  }
  if (a == b) {
    m1.a += a;
    m1.b += a;
  } else if (b > a) {
    int t = b - a;
    if (m4.a + m5.a >= t) {
      int tmp = min(t, m4.a);
      m4.a -= tmp;
      t -= tmp;
      tmp = min(t, m5.a);
      m5.a -= tmp;
      t -= tmp;
      m1.a += b;
      m1.b += b;
    } else
      return false;
  } else if (a > b) {
    int t = a - b;
    if (m1.b + m2.b + m3.b >= t) {
      int tmp = min(t, m1.b);
      m1.b -= tmp;
      t -= tmp;
      tmp = min(t, m2.b);
      m2.b -= tmp;
      t -= tmp;
      tmp = min(t, m3.b);
      m3.b -= tmp;
      t -= tmp;
      m4.a += a;
      m4.b += a;
    } else
      return false;
  } else
    return false;
  if (flag) {
    printf("3:2\n");
    printf("%d:%d %d:%d %d:%d %d:%d %d:%d\n", m4.a, m4.b, m5.a, m5.b, m1.a,
           m1.b, m2.a, m2.b, m3.a, m3.b);
  } else {
    printf("2:3\n");
    printf("%d:%d %d:%d %d:%d %d:%d %d:%d\n", m4.b, m4.a, m5.b, m5.a, m1.b,
           m1.a, m2.b, m2.a, m3.b, m3.a);
  }
  return true;
}
int main() {
  int T;
  scanf("%d", &T);
  for (int t = 1; t <= T; t++) {
    int a, b;
    scanf("%d%d", &a, &b);
    if (!work30(a, b, true)) {
      if (!work31(a, b, true)) {
        if (!work32(a, b, true)) {
          if (!work32(b, a, false)) {
            if (!work31(b, a, false)) {
              if (!work30(b, a, false)) {
                printf("Impossible\n");
              }
            }
          }
        }
      }
    }
  }
  return 0;
}
