#include <bits/stdc++.h>
using namespace std;
void read_file(bool outToFile = true) {}
int n, R;
string anss;
char imp[] = "IMPOSSIBLE";
bool special() {
  if (R != 1) return 0;
  if (n != 1) {
    printf("%s\n", imp);
    return 1;
  }
  printf("0\n");
  printf("T\n");
  return 1;
}
int get(int a, int b, int steps = 0) {
  if (a == 0) return -1;
  if (a == 1) {
    assert(b >= 2);
    if (steps + b == n)
      return b - 2 + 1;
    else
      return -1;
  }
  int q = b / a;
  int ret;
  ret = get(b - q * a, a, steps + q);
  if (ret == -1) return ret;
  ret += q - 1;
  return ret;
}
int get1(int a, int b, int steps = 0) {
  if (a == 0) {
    if (b == 1 && steps == n)
      return 0;
    else
      return -1;
  }
  int q = b / a;
  int ret;
  ret = get(b - q * a, a, steps + q);
  if (ret == -1) return ret;
  ret += q - 1;
  return ret;
}
char alter(char c) { return c == 'T' ? 'B' : 'T'; }
void rec(int a, int b, int steps = 0, char c = 'T') {
  if (a == 0) {
    assert(b == 1 && steps == n);
    return;
  }
  int q = b / a;
  rec(b - q * a, a, steps + q, alter(c));
  anss += string(q, c);
}
void get_anss(int x) {
  anss = "";
  rec(x, R);
  if (anss[0] != 'T') anss[0] = 'T';
  if (n > 1 && anss[0] == anss[1]) {
    for (int i = 1; i < anss.length(); i++) anss[i] = alter(anss[i]);
  }
}
int main() {
  read_file();
  while (scanf("%d%d", &n, &R) != EOF) {
    if (special()) continue;
    int ans = -1;
    int ansx = -1;
    for (int x = 1; x < R; x++) {
      int nw = get(x, R);
      if (nw == -1) continue;
      if (ans == -1 || ans > nw) ans = nw, ansx = x;
    }
    if (ans == -1) {
      printf("%s\n", imp);
      continue;
    }
    ans--;
    printf("%d\n", ans);
    assert(ansx != -1);
    get_anss(ansx);
    printf("%s\n", anss.c_str());
  }
}
