#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:400000000")
int n, r;
string ans;
pair<int, int> f(int a, int b) {
  if (a == 1 && b == 0) return pair<int, int>(0, 0);
  if (a > 1 && b == 0) return pair<int, int>(1000000007LL, 1000000007LL);
  if (a == 1 && b == 1) return pair<int, int>(1, 0);
  if (a > 1 && b == 1) return pair<int, int>(2, a - 2);
  pair<int, int> p = f(b, a % b);
  return pair<int, int>(p.first + 1, p.second + a / b - 1);
}
void g(int a, int b) {
  if (a == 1 && b == 0) return;
  if (a == 1 && b == 1) {
    ans += "T";
    return;
  }
  if (a > 1 && b == 1) {
    ans += "TB";
    for (int i = 0; i < a - 2; i++) ans += "B";
    return;
  }
  g(b, a % b);
  if (ans[ans.size() - 1] == 'T') {
    ans += "B";
    for (int i = 0; i < a / b - 1; i++) ans += "B";
  } else {
    ans += "T";
    for (int i = 0; i < a / b - 1; i++) ans += "T";
  }
}
int main() {
  cin >> n >> r;
  int mi = 1000000007LL, best = -1;
  for (int i = 1; i < r + 1; i++) {
    if (r > 1 && r == i) continue;
    pair<int, int> p = f(r, i);
    if (p.first + p.second == n && p.second < mi) mi = p.second, best = i;
  }
  if (best == -1)
    cout << "IMPOSSIBLE";
  else {
    g(r, best);
    cout << mi << endl << ans;
  }
}
