#include <bits/stdc++.h>
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize(2)
#pragma G++ optimize(2)
using namespace std;
constexpr long long N = 2e5 + 9;
constexpr long long M = 1e9 + 7;
constexpr long long INF = 0x3f3f3f3f3f3f3f3f;
constexpr long long INF2 = 0xcfcfcfcfcfcfcfcf;
long long n;
long long a[N], b[N];
string ans;
long long p, r;
void print() {
  for (long long i = 1; i <= n; i++) cout << b[i] << " ";
  cout << endl;
}
signed fail() {
  cout << "IMPOSSIBLE" << endl;
  return 0;
}
bool rcheck() {
  for (long long i = 1; i <= n; i++) {
    if (a[i] != b[n + 1 - i]) return false;
  }
  r++;
  ans += 'R';
  return true;
}
bool check() {
  if (rcheck()) return true;
  for (long long i = 1; i <= n; i++) {
    if (a[i] != b[i]) return false;
  }
  return true;
}
signed answer() {
  if (p <= 2e5) {
    cout << "SMALL" << endl;
    cout << ans.size() << endl;
    reverse(ans.begin(), ans.end());
    cout << ans << endl;
    return 0;
  }
  cout << "BIG" << endl;
  cout << p << endl;
  return 0;
}
signed solve1() {
  if (check()) {
    return answer();
  }
  return fail();
}
inline bool inc() {
  for (long long i = 1; i < n; i++) {
    if (b[i + 1] <= b[i]) return false;
  }
  return true;
}
bool R() {
  if (inc()) return true;
  reverse(b + 1, b + 1 + n);
  r++;
  ans += 'R';
  return inc();
}
inline bool P() {
  for (long long i = n; i >= 1; i--) {
    b[i] = b[i] - b[i - 1];
    if (b[i] < 1) return false;
  }
  p++;
  ans += 'P';
  return true;
}
signed solve2() {
  bool rev = false;
  if (a[1] > a[2]) swap(a[1], a[2]), r++, rev = true;
  while (!check()) {
    if (b[1] == b[2]) return fail();
    if (b[1] > b[2]) {
      swap(b[1], b[2]), r++;
      if (p <= 2e5) ans += 'R';
      continue;
    }
    if (b[1] == b[2]) return fail();
    if (a[1] == b[1]) {
      if ((b[2] - a[2]) % b[1] == 0 && b[2] > a[2]) {
        long long op = (b[2] - a[2]) / b[1];
        p += op;
        if (p <= 2e5) {
          while (op--) ans += 'P';
        }
        break;
      } else
        return fail();
    }
    long long op = b[2] / b[1];
    p += op;
    if (p <= 2e5)
      while (op--) ans += 'P';
    b[2] = b[2] % b[1];
    if (b[2] == 0) return fail();
  }
  if (rev) ans += 'R';
  return answer();
}
signed solve() {
  while (!check()) {
    if (!R()) return fail();
    if (!P()) return fail();
  }
  answer();
  return 0;
}
signed main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  ;
  cin >> n;
  for (long long i = 1; i <= n; i++) cin >> a[i];
  for (long long i = 1; i <= n; i++) cin >> b[i];
  if (n == 1) return solve1();
  if (n == 2) return solve2();
  return solve();
}
