func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long MOD = (long long)1e9 + 7;   const long long MOD1 = 2286661337;   const long long MOD2 = 998244353;   const int INF = (int)1e9 + 7;   const double EPS = 1e-7;   const int N = (int)2e5;   int n;   long long a[N], b[N];   bool is_same_() {     for (int i = 0; i < n; ++i) {       if (a[i] != b[i]) {         return false;       }     }     return true;   }   bool is_up() {     for (int i = 1; i < n; ++i) {       if (b[i] <= b[i - 1]) {         return false;       }     }     return true;   }   bool is_down() {     for (int i = 1; i < n; ++i) {       if (b[i] >= b[i - 1]) {         return false;       }     }     return true;   }   bool is_bad() {     for (int i = 0; i < n; ++i) {       if (b[i] <= 0) {         return true;       }     }     return false;   }   bool is_rev_same() {     for (int i = 0; i < n; ++i) {       if (a[i] != b[n - 1 - i]) {         return false;       }     }     return true;   }   bool is_uncomp() {     for (int i = 0; i < n; ++i) {       if (a[i] > b[i]) {         return true;       }     }     return false;   }   void solve() {     int cnt = 0;     string ans;     int prev_ = -1;     while (!is_same_()) {       if (is_rev_same()) {         ans.push_back( R );         break;       }       if (is_bad()) {         cnt = -1;         break;       }       if (is_up()) {         for (int i = n - 1; i >= 0; --i) {           b[i] = (i ? b[i] - b[i - 1] : b[i]);         }         if (prev_ != 0) {           if (prev_ != -1) {             ans.push_back( R );           }           prev_ = 0;         }         ans.push_back( P );       } else if (is_down()) {         for (int i = 0; i < n; ++i) {           b[i] = (i == n - 1 ? b[i] : b[i] - b[i + 1]);         }         if (prev_ != 1) {           ans.push_back( R );           prev_ = 1;         }         ans.push_back( P );       } else {         cnt = -1;         break;       }       ++cnt;     }     if (prev_ == 1) {       ans.push_back( R );     }     reverse(ans.begin(), ans.end());     if (cnt == -1) {       printf( IMPOSSIBLE );     } else if (cnt > N) {       printf( BIG n%d , cnt);     } else {       printf( SMALL n%d n%s , ans.size(), ans.c_str());     }   }   signed main() {     scanf( %d , &n);     for (int i = 0; i < n; ++i) {       scanf( %lld , &a[i]);     }     for (int i = 0; i < n; ++i) {       scanf( %lld , &b[i]);     }     if (n == 1) {       if (a[0] == b[0]) {         printf( SMALL n0 );       } else {         printf( IMPOSSIBLE );       }     } else if (n == 2) {       long long cnt = 0;       int prev_ = -1;       string ans =   ;       while (!is_same_()) {         if (is_rev_same()) {           ans.push_back( R );           break;         }         if (is_uncomp()) {           ans.push_back( R );           reverse(b, b + n);           if (is_uncomp()) {             cnt = -1;             break;           }         }         long long x = b[0], y = b[1];         if (x <= 0 || y <= 0) {           cnt = -1;           break;         }         if (x < y) {           if (prev_ != 0) {             if (prev_ != -1) {               ans.push_back( R );             }             prev_ = 0;           }           long long cur_cnt = y / x;           if (x == a[0]) {             cur_cnt = min(cur_cnt, (y - a[1] + x - 1) / x);           }           if (ans.size() + cur_cnt <= N) {             for (int i = 0; i < cur_cnt; ++i) {               ans.push_back( P );             }           }           cnt += cur_cnt;           y -= x * cur_cnt;         } else if (x > y) {           if (prev_ != 1) {             ans.push_back( R );             prev_ = 1;           }           long long cur_cnt = x / y;           if (y == a[1]) {             cur_cnt = min(cur_cnt, (x - a[0] + y - 1) / y);           }           if (ans.size() + cur_cnt <= N) {             for (int i = 0; i < cur_cnt; ++i) {               ans.push_back( P );             }           }           cnt += cur_cnt;           x -= y * cur_cnt;         } else {           cnt = -1;           break;         }         b[0] = x, b[1] = y;       }       if (prev_ == 1) {         ans.push_back( R );       }       reverse(ans.begin(), ans.end());       if (cnt == -1) {         printf( IMPOSSIBLE );       } else if (cnt > N) {         printf( BIG n%lld , cnt);       } else {         printf( SMALL n%d n%s , ans.size(), ans.c_str());       }     } else {       solve();     }     return 0;   }   