#include <bits/stdc++.h>
using namespace std;
int n, r;
int ans;
int id;
string s;
int fib[100];
void chmin(int &x, int y, int psa) {
  if (x <= y) return;
  x = y;
  id = psa;
}
int dfs(int x, int y, int t) {
  if (x > y) swap(x, y);
  if (!x && !t) return 0;
  if (!x || !t) return 1e9;
  return y / x - 1 + dfs(x, y % x, t - y / x);
}
void go(int x, int y, int t, bool typ) {
  if (x > y) swap(x, y);
  if (!x && !t) return;
  go(x, y % x, t - y / x, 1 - typ);
  for (int i = 0; i < y / x; i++) s += ((typ) ? 'T' : 'B');
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> r;
  fib[0] = fib[1] = 1;
  for (int i = 2; i <= n; i++) {
    fib[i] = fib[i - 1] + fib[i - 2];
    if (fib[i] > 10000000) break;
  }
  if (n < 100 && fib[n] && fib[n] < r) return cout << "IMPOSSIBLE\n", 0;
  if (n > r) return cout << "IMPOSSIBLE\n", 0;
  if (r == 1) return cout << "0\nT\n", 0;
  ans = 1e9;
  for (int i = 1; i <= r; i++) chmin(ans, dfs(i, r, n), i);
  if (ans > 1e8 || ans <= 0) return cout << "IMPOSSIBLE\n", 0;
  go(id, r, n, 0);
  if (s[0] == 'B')
    s[0] = 'T';
  else
    for (int i = 1; i < s.size(); i++) s[i] = (s[i] == 'T') ? 'B' : 'T';
  int a = 0, b = 1;
  for (int i = 0; i < s.size(); i++)
    if (s[i] == 'T')
      a += b;
    else
      b += a;
  if (max(a, b) != r) return cout << "IMPOSSIBLE\n", 0;
  cout << ans - 1 << '\n';
  cout << s << '\n';
  return 0;
}
