#include <bits/stdc++.h>
using namespace std;
int nextInt() {
  int x;
  scanf("%d", &x);
  return x;
}
string nextString() {
  char buf[200];
  scanf("%s", buf);
  return buf;
}
int countErrors(int n, int a, int b) {
  if (a == b) {
    if (a != 1) {
      return INT_MAX;
    }
    return n == 1 ? 1 : INT_MAX;
  }
  if (a < b) {
    if (a == 0) {
      return n == 0 && b == 1 ? 0 : INT_MAX;
    }
    if (a == 1) {
      return n - b == 0 ? max(0, b - 2) : INT_MAX;
    } else {
      int res = countErrors(n - b / a, a, b % a);
      if (res != INT_MAX) {
        res += b / a - 1;
      }
      return res;
    }
  } else {
    if (b == 0) {
      return INT_MAX;
    }
    if (b == 1) {
      return n - a == 0 ? max(0, a - 1) : INT_MAX;
    } else {
      int res = countErrors(n - a / b, a % b, b);
      if (res != INT_MAX) {
        res += a / b - 1;
      }
      return res;
    }
  }
}
string inv(string s) {
  for (int i = 0; i < s.size(); ++i) {
    s[i] ^= 'T' ^ 'B';
  }
  return s;
}
string buildString(int n, int a, int b) {
  if (a == b) {
    if (a != 1) {
      throw 0;
    }
    return "T";
  }
  if (a < b) {
    if (a == 0) {
      return "";
    }
    if (a == 1) {
      return "T" + string(b - 1, 'B');
    } else {
      return buildString(n - b / a, a, b % a) + string(b / a, 'B');
    }
  } else {
    if (b == 1) {
      return string(a, 'T');
    } else {
      return buildString(n - a / b, a % b, b) + string(a / b, 'T');
    }
  }
}
int main() {
  int n = nextInt();
  int r = nextInt();
  if (n == 1 && r == 1) {
    cout << "0\nT\n";
    return 0;
  }
  int bestX = -1;
  int bestR = -1;
  int bestCnt = INT_MAX;
  for (int x = 0; x <= r; ++x) {
    int eCnt = countErrors(n, x, r);
    if (eCnt < bestCnt) {
      bestCnt = eCnt;
      bestX = x;
      bestR = r;
    }
    eCnt = countErrors(n, r, x);
    if (eCnt < bestCnt) {
      bestCnt = eCnt;
      bestX = r;
      bestR = x;
    }
  }
  if (bestX == -1) {
    printf("IMPOSSIBLE\n");
  } else {
    printf("%d\n%s\n", bestCnt, buildString(n, bestX, bestR).c_str());
  }
  return 0;
}
