#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops")
#pragma GCC optimize("no-stack-protector,fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
const long long N = 5e5 + 100, OO = 1e17 + 10, M = 1e9 + 7, P = 49157, sq = 360,
                lg = 30;
long long a[N], b[N], c[N];
int32_t main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  long long n;
  cin >> n;
  for (long long i = 0; i < n; i++) cin >> a[i];
  for (long long i = 0; i < n; i++) {
    cin >> b[i];
    c[i] = b[i];
  }
  if (n == 1) {
    if (a[0] == b[0]) return cout << "SMALL\n0\n", 0;
    return cout << "IMPOSSIBLE", 0;
  }
  long long t = 0;
  if (n > 25)
    t = 25;
  else if (n >= 6 && n <= 25)
    t = 1e5;
  else if (n < 6)
    t = 3e6;
  string s = "";
  long long ans = 0;
  for (long long i = 0; i < t; i++) {
    bool u = true;
    for (long long j = 0; j < n; j++)
      if (a[j] != b[j]) u = false;
    if (u) {
      if (ans > 200000) {
        cout << "BIG" << endl;
        cout << ans << endl;
        return 0;
      }
      cout << "SMALL" << endl << (long long)s.size() << endl;
      reverse(s.begin(), s.end());
      cout << s << endl;
      return 0;
    }
    u = true;
    reverse(b, b + n);
    for (long long j = 0; j < n; j++)
      if (a[j] != b[j]) u = false;
    if (u) {
      if (ans > 200000) {
        cout << "BIG" << endl;
        cout << ans << endl;
        return 0;
      }
      s += 'R';
      cout << "SMALL" << endl << (long long)s.size() << endl;
      reverse(s.begin(), s.end());
      cout << s << endl;
      return 0;
    }
    reverse(b, b + n);
    if (b[n - 1] < b[0]) reverse(b, b + n), s += 'R';
    ans++;
    s += 'P';
    long long sum = 0;
    for (long long i = 0; i < n; i++) {
      b[i] -= sum;
      sum += b[i];
      if (b[i] <= 0) return cout << "IMPOSSIBLE", 0;
    }
  }
  if (n > 2) return cout << "IMPOSSIBLE", 0;
  ans = 0;
  if (a[0] > a[1]) swap(a[0], a[1]);
  while (c[0] != 0 && c[1] != 0) {
    if ((c[0] == a[0] && c[1] == a[1]) || (c[0] == a[1] && c[1] == a[0]))
      return cout << "BIG\n" << ans, 0;
    if (c[1] < c[0]) swap(c[1], c[0]);
    if (c[0] != a[0]) {
      ans += c[1] / c[0];
      c[1] %= c[0];
    } else {
      if (c[1] < a[1]) return cout << "IMPOSSIBLE", 0;
      if ((c[1] - a[1]) % a[0] == 0) {
        cout << "BIG" << endl;
        ans += (c[1] - a[1]) / a[0];
        return cout << ans, 0;
      } else
        return cout << "IMPOSSIBLE", 0;
    }
  }
  if (c[0] == 0 || c[1] == 0) return cout << "IMPOSSIBLE", 0;
  cout << "BIG" << endl;
  cout << ans << endl;
  return 0;
}
