#include <bits/stdc++.h>
using namespace std;
static const int INF = 500000000;
template <class T>
void debug(T a, T b) {
  for (; a != b; ++a) cerr << *a << ' ';
  cerr << endl;
}
int n, r;
int getope(int a, int b) {
  int ope = 0;
  while (a > 0 && b > 0) {
    if (a >= b) {
      ope += a / b;
      a %= b;
    } else {
      ope += (b - 1) / a;
      b -= (b - 1) / a * a;
    }
  }
  if (a == 0 && b == 1) return ope;
  return -1;
}
int getmis(int a, int b) {
  int ope = 0, res = 0;
  int last = -1;
  while (a > 0 && b > 0) {
    if (a >= b) {
      res += a / b - 1;
      a %= b;
      last = 1;
    } else {
      res += (b - 1) / a - 1;
      b -= (b - 1) / a * a;
      last = 2;
    }
  }
  cerr << "last"
       << " = " << (last) << endl;
  cerr << "res"
       << " = " << (res) << endl;
  if (last != 1) return INF;
  return res;
}
string answer;
void makeans(int a, int b) {
  int ope = 0, res = 0;
  while (a > 0 && b > 0) {
    if (a >= b) {
      for (int i = 0; i < a / b; ++i) answer += 'T';
      a %= b;
    } else {
      for (int i = 0; i < (b - 1) / a; ++i) answer += 'B';
      b -= (b - 1) / a * a;
    }
  }
  reverse((answer).begin(), (answer).end());
}
int main() {
  scanf("%d%d", &n, &r);
  int least = INF, t, b;
  for (int i = 1; i <= r; ++i) {
    if (getope(i, r) == n) {
      int tmp = getmis(i, r);
      if (least > tmp) {
        least = tmp;
        t = i;
        b = r;
      }
    }
    if (getope(r, i) == n) {
      int tmp = getmis(r, i);
      if (least > tmp) {
        least = tmp;
        t = r;
        b = i;
      }
    }
  }
  if (least >= INF) {
    puts("IMPOSSIBLE");
    return 0;
  }
  makeans(t, b);
  printf("%d\n", least);
  cout << answer << endl;
  return 0;
}
