#include <bits/stdc++.h>
using namespace std;
struct node {
  bool t;
  long long v;
} ans[300];
int cnt = 0;
int dfs(long long x, long long y) {
  if (!x) return y;
  if (!y) return x;
  if (x < y) {
    long long d = dfs(x, y % x);
    if (d == 1) ans[++cnt] = (node){0, y / x};
    return d;
  } else {
    long long d = dfs(x % y, y);
    if (d == 1) ans[++cnt] = (node){1, x / y};
    return d;
  }
}
int main() {
  long long x, y;
  int i, k, j;
  cin >> x >> y;
  if (dfs(x, y) != 1)
    puts("Impossible");
  else {
    ans[1].v--;
    for (i = cnt; i >= 1; i--)
      cout << ans[i].v, printf("%c", (ans[i].t == 1) ? 'A' : 'B');
  }
  return 0;
}
