func_code_string: #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;     }   }   