#include <bits/stdc++.h>
using namespace std;
int n;
int64_t a[200000];
int64_t b[200000];
string ans;
int PC = 0;
bool REVED = 0;
bool eq() {
  int i = 0;
  for (i = 0; i < n; ++i) {
    if (a[i] != b[i]) break;
  }
  if (i == n) return true;
  for (int i = 0; i < n; ++i) {
    if (a[i] != b[n - i - 1]) return false;
  }
  ans += 'R';
  return true;
}
bool process() {
  if (b[0] > b[n - 1]) {
    if (!REVED) {
      REVED = true;
      ans += 'R';
    }
    for (int i = 0; i < n; ++i) {
      b[i] -= b[i + 1];
      if (b[i] <= 0) return false;
    }
  } else {
    if (REVED) {
      REVED = false;
      ans += 'R';
    }
    for (int i = n - 1; i > 0; --i) {
      b[i] -= b[i - 1];
      if (b[i] <= 0) return false;
    }
  }
  ++PC;
  ans += 'P';
  return true;
}
void special() {
  bool sa = false;
  vector<int64_t> av;
  int64_t a0 = a[0], a1 = a[1], b0 = b[0], b1 = b[1];
  if (a0 > a1) {
    swap(a0, a1);
    sa = true;
  }
  if (b0 > b1) {
    av.push_back(0);
    swap(b0, b1);
  }
  while (b0) {
    if (b0 == a0 && b1 >= a1 && (b1 - a1) % b0 == 0) {
      av.push_back((b1 - a1) / b0);
      int64_t sm = accumulate(av.begin(), av.end(), 0LL);
      if (sm <= 200000) {
        for (int i = 0; i < av.size(); ++i) {
          for (int j = 0; j < av[i]; ++j) ans += 'P';
          if (i != av.size() - 1) ans += 'R';
        }
        if (sa) {
          if (ans.size() && ans.back() == 'R')
            ans.pop_back();
          else
            ans.push_back('R');
        }
        reverse(ans.begin(), ans.end());
        cout << "SMALL\n" << ans.size() << endl << ans << endl;
      } else {
        cout << "BIG\n" << sm << endl;
      }
      return;
    }
    if (b0 == 0 || b0 == a0 || b0 == b1) {
      cout << "IMPOSSIBLE" << endl;
      return;
    }
    av.push_back(b1 / b0);
    auto temp = b0;
    b0 = (b1 - 1) % b0 + 1;
    b1 = temp;
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  int ansSZ = 0;
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
  }
  for (int i = 0; i < n; ++i) {
    cin >> b[i];
  }
  if (n == 1) {
    if (a[0] == b[0])
      cout << "SMALL\n0\n" << endl;
    else
      cout << "IMPOSSIBLE" << endl;
    return 0;
  }
  if (n == 2) {
    special();
    return 0;
  }
  if (eq()) {
    cout << "SMALL\n" << ans.size() << endl << ans << endl;
    return 0;
  }
  while (process()) {
    if (eq()) {
      if (PC <= 200000) {
        if (REVED) ans += 'R';
        cout << "SMALL\n" << ans.size() << endl;
        reverse(ans.begin(), ans.end());
        cout << ans << endl;
      } else {
        cout << "BIG\n" << PC << endl;
      }
      return 0;
    }
  }
  cout << "IMPOSSIBLE" << endl;
}
