#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops", \
                     "omit-frame-pointer", "inline")
#pragma GCC target( \
    "sse,sse2,sse3,ssse3,sse4,sse4.1,sse4.2,popcnt,abm,mmx,avx,avx2,fma,tune=native")
#pragma GCC option("arch=native", "no-zero-upper")
using namespace std;
const long long mod = (1e9 + 7);
const long double eps = (1e-9);
const long long oo = (long long)(1e18);
vector<pair<long long, long long> > dp[(long long)(2e2 + 5)]
                                      [(long long)(2e2 + 5)][4][4];
bool dp0[(long long)(2e2 + 5)][(long long)(2e2 + 5)][4][4];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  dp0[0][0][0][0] = 1;
  for (int i = 0; i < (long long)(2e2 + 5); i++)
    for (int j = 0; j < (long long)(2e2 + 5); j++)
      for (int s1 = 0; s1 < 3; s1++)
        for (int s2 = 0; s2 < 3; s2++)
          for (int w = 0; w < 2; w++) {
            if (!dp0[i][j][s1][s2]) continue;
            vector<pair<long long, long long> > pw;
            if (s1 == 2 && s2 == 2) {
              for (int p = 0; p < 14; p++)
                pw.push_back(pair<long long, long long>(15, p));
              for (int p = 14; p < (long long)(2e2 + 5); p++)
                pw.push_back(pair<long long, long long>(p + 2, p));
            } else {
              for (int p = 0; p < 24; p++)
                pw.push_back(pair<long long, long long>(25, p));
              for (int p = 24; p < (long long)(2e2 + 5); p++)
                pw.push_back(pair<long long, long long>(p + 2, p));
            }
            if (w)
              for (int i = 0; i < pw.size(); i++)
                pw[i] = pair<long long, long long>(pw[i].second, pw[i].first);
            for (auto p : pw) {
              int ni = i + p.first;
              int nj = j + p.second;
              if (ni < (long long)(2e2 + 5) && nj < (long long)(2e2 + 5)) {
                if (!dp0[ni][nj][s1 + (w == 0)][s2 + (w == 1)]) {
                  dp0[ni][nj][s1 + (w == 0)][s2 + (w == 1)] = 1;
                  for (auto pp : dp[i][j][s1][s2])
                    dp[ni][nj][s1 + (w == 0)][s2 + (w == 1)].push_back(pp);
                  dp[ni][nj][s1 + (w == 0)][s2 + (w == 1)].push_back(p);
                }
              }
            }
          }
  int t;
  cin >> t;
  while (t--) {
    int x, y;
    cin >> x >> y;
    vector<pair<long long, long long> > ts;
    for (int i = 0; i < 4; i++)
      for (int j = 0; j < 4; j++)
        if ((i == 3 || j == 3) && dp0[x][y][i][j])
          ts.push_back(pair<long long, long long>(-i, j));
    sort((ts).begin(), (ts).end());
    if (ts.empty()) {
      cout << ("Impossible") << '\n';
      continue;
    }
    int i = -ts[0].first;
    int j = ts[0].second;
    cout << i << ":" << j << '\n';
    for (auto p : dp[x][y][i][j]) cout << p.first << ':' << p.second << ' ';
    cout << '\n';
  }
  return 0;
}
