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