#include <bits/stdc++.h>   using namespace std;   vector<char> sequ;   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     int n;     long long num;     cin >> n;     vector<long long> a(n);     vector<long long> b(n);     for (int i = 0; i < n; i++) {       cin >> a[i];     }     for (int i = 0; i < n; i++) {       cin >> b[i];     }     if (n == 1 && a[0] == b[0]) {       cout <<  SMALL n0 n ;       return 0;     }     if (n == 1) {       cout <<  IMPOSSIBLE n ;       return 0;     }     long long pep_op = 0, rev_op = 0;     if (n == 2) {       long long a0 = a[0], a1 = a[1], b0 = b[0], b1 = b[1];       if (a0 > a1) {         swap(a0, a1);       }       while (1) {         if ((a0 == b0 && a1 == b1) || (a0 == b1 && a1 == b0)) {           if (a[0] != a0) {             rev_op++;             sequ.push_back( R );           }           if (pep_op > 200000)             cout <<  BIG n  << pep_op <<   n ;           else {             cout <<  SMALL n  << pep_op + rev_op <<   n ;             int sz = sequ.size();             for (int i = sz - 1; i >= 0; i--) cout << sequ[i];             cout <<   n ;           }           return 0;         }         if (b0 > b1) {           swap(b0, b1);           sequ.push_back( R );           rev_op++;         }         if (a0 > b0 || a1 > b1) {           cout <<  IMPOSSIBLE n ;           return 0;         }         long long temp = (b1 - max(b0, a1)) % b0;         long long pref = (b1 - max(b0, a1)) / b0;         pep_op = pref + pep_op;         if (pep_op <= 200000) {           while (pref--) sequ.push_back( P );         }         b1 = temp + max(b0, a1);         if (b0 + b1 > a0 + a1) {           long long temp1 = b0;           b0 = b1 - b0;           b1 = temp1;           sequ.push_back( P );           sequ.push_back( R );           pep_op++;           rev_op++;         }       }       return 0;     }     while (b[0] + b[n - 1] > a[0] + a[n - 1]) {       if (b[1] != b[0]) {         bool order = true;         if (b[1] > b[0]) {           for (int i = 1; i < n; i++) {             if (b[i] <= b[i - 1]) {               order = false;               break;             }           }         } else if (b[0] > b[1]) {           reverse(b.begin(), b.end());           for (int i = 1; i < n; i++) {             if (b[i] <= b[i - 1]) {               order = false;               break;             }           }           if (order == true) {             sequ.push_back( R );             rev_op++;           }         }         if (order == true) {           for (int i = n - 1; i > 0; i--) b[i] = b[i] - b[i - 1];           sequ.push_back( P );           pep_op++;         } else           break;       } else         break;     }     int count = 0;     int rcount = 0;     for (int i = 0; i < n; i++) {       if (a[i] == b[i]) count++;     }     for (int i = 0, j = n - 1; i < n; i++, j--) {       if (a[i] == b[j]) rcount++;     }     if (rcount == n && count != n) {       sequ.push_back( R );       rev_op++;     }     if (count == n || rcount == n) {       if (pep_op <= 200000) {         cout <<  SMALL n  << pep_op + rev_op <<   n ;         int sz = sequ.size();         for (int i = sz - 1; i >= 0; i--) cout << sequ[i];         cout <<   n ;       } else         cout <<  BIG n  << pep_op <<   n ;     } else {       cout <<  IMPOSSIBLE n ;     }     return 0;   }