#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const long long base = 998244353;
const long long oo = 2e5 + 1;
const long long gh = 1e3 + 3;
const long long inf = 1e15 + 5;
double pi = 2 * asin(1);
const long long elim = 2e5;
long long n, m, k;
long long a[oo];
vector<long long> a1, a2;
long long sum[oo];
string s;
char c[oo];
void print() {}
vector<long long> rolback(const vector<long long> &a) {
  vector<long long> ans(a.size());
  ans[0] = a[0];
  for (long long i = 1; i < n; i++) ans[i] = a[i] - a[i - 1];
  return ans;
}
long long check(const vector<long long> &a) {
  long long d = 1, ii = 2;
  long long sp = a[1];
  for (long long i = 1; i < n; i++) {
    if (a[i] > a[i - 1]) d = 0;
    if (a[i] < a[i - 1]) ii = 0;
    if (i < n && a[i]) sp = 1;
  }
  if (sp == 0) {
    cout << "IMPOSSIBLE";
    exit(0);
  }
  return min(d + ii, 2LL);
}
bool cmp(const vector<long long> &a, const vector<long long> &b) {
  for (long long i = 0; i < n; i++) {
    if (a[i] != b[i]) return 0;
  }
  return 1;
}
void solve() {
  stack<char> q;
  long long cnt = 0;
  while (1) {
    if (cmp(a1, a2)) break;
    reverse(a1.begin(), a1.end());
    if (cmp(a1, a2)) {
      q.push('R');
      break;
    }
    long long t = check(a2);
    if (t == 0) {
      cout << "IMPOSSIBLE";
      exit(0);
    }
    reverse(a1.begin(), a1.end());
    if (t == 1) {
      q.push('R');
      q.push('P');
      reverse(a2.begin(), a2.end());
      a2 = rolback(a2);
    }
    if (t == 2) {
      q.push('P');
      a2 = rolback(a2);
    }
    cnt++;
  }
  if (q.size() <= elim) {
    cout << "SMALL\n";
    cout << q.size() << "\n";
    while (!q.empty()) {
      cout << q.top();
      q.pop();
    }
    exit(0);
  }
  cout << "BIG\n";
  cout << cnt;
}
long long roolback(vector<long long> &a) {
  long long t = a[1] / a[0];
  a[1] %= a[0];
  return t;
}
void proc() {
  if (n > 2) {
    solve();
    return;
  }
  long long A[3];
  for (long long i = 0; i < n; i++) A[i] = a1[i];
  long long B[3];
  for (long long i = 0; i < n; i++) B[i] = a2[i];
  long long ans = 0;
  long long ex = 0;
  long long cnt = 0;
  if (a1[0] > a1[1]) swap(a1[0], a1[1]), ans++, ex = 1;
  while (1) {
    if (a2[0] < a1[0] || a2[1] < a1[0]) {
      cout << "IMPOSSIBLE";
      exit(0);
    }
    if (a2[0] == a1[0] || a2[1] == a1[0]) {
      break;
    }
    long long t = check(a2);
    if (t == 1) {
      reverse(a2.begin(), a2.end());
      long long t = roolback(a2);
      ans += t;
      cnt += t;
      ans++;
    }
    if (t == 2) {
      long long t = roolback(a2);
      ans += t;
      cnt += t;
    }
  }
  long long t = check(a2);
  if (t == 1) {
    reverse(a2.begin(), a2.end());
    ans++;
  }
  if ((a2[1] - a1[1]) % a1[0]) {
    cout << "IMPOSSIBLE";
    exit(0);
  }
  ans += (a2[1] - a1[1]) / a1[0];
  cnt += (a2[1] - a1[1]) / a1[0];
  if (ans <= elim) {
    for (long long i = 0; i < n; i++) a1[i] = A[i];
    for (long long i = 0; i < n; i++) a2[i] = B[i];
    solve();
  } else
    cout << "BIG\n" << cnt;
}
void Main() {
  cin >> n;
  a1.resize(n);
  a2.resize(n);
  for (long long i = 0; i < n; i++) cin >> a1[i];
  for (long long i = 0; i < n; i++) cin >> a2[i];
  if (n == 1) {
    if (a2[0] != a1[0])
      cout << "IMPOSSIBLE";
    else {
      cout << "SMALL\n";
      cout << 0 << "\n";
    }
    return;
  }
  proc();
}
int32_t main() {
  if (ifstream("test.txt")) {
    freopen("test.txt", "r", stdin);
  } else if (ifstream(""
                      ".inp")) {
    freopen(
        ""
        ".inp",
        "r", stdin);
    freopen(
        ""
        ".out",
        "w", stdout);
  }
  long long t = 1;
  while (t--) {
    Main();
  }
}
