#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  char ch = getchar();
  long long nega = 1;
  while (!isdigit(ch)) {
    if (ch == '-') nega = -1;
    ch = getchar();
  }
  long long ans = 0;
  while (isdigit(ch)) {
    ans = ans * 10 + ch - 48;
    ch = getchar();
  }
  if (nega == -1) return -ans;
  return ans;
}
inline long long min(long long x, long long y, long long z) {
  return min(x, min(y, z));
}
inline long long max(long long x, long long y, long long z) {
  return max(x, max(y, z));
}
inline long long add(long long x, long long y) {
  return x + y >= 998244353 ? x + y - 998244353 : x + y;
}
inline long long add(long long x, long long y, long long z) {
  return add(add(x, y), z);
}
inline long long sub(long long x, long long y) {
  return x - y < 0 ? x - y + 998244353 : x - y;
}
inline long long mul(long long x, long long y) {
  return 1LL * x * y % 998244353;
}
inline long long mul(long long x, long long y, long long z) {
  return mul(mul(x, y), z);
}
vector<long long> a, b;
vector<char> ans;
long long n;
void solve1() {
  if (a[0] == b[0])
    cout << "SMALL\n0\n";
  else
    cout << "IMPOSSIBLE\n";
}
bool rsame(vector<long long> x, vector<long long> y) {
  reverse(x.begin(), x.end());
  return x == y;
}
void fail() { cout << "IMPOSSIBLE\n", exit(0); }
bool push_back(char s) {
  if ((long long)ans.size() <= 200000) {
    ans.push_back(s);
    return 1;
  }
  return 0;
}
void solve2() {
  long long tot = 0, sum = 0;
  while (a != b && !rsame(a, b)) {
    if (b[0] > b[1]) swap(b[0], b[1]), tot++, push_back('R');
    if (a[0] > a[1] && b[0] == a[1]) {
      if (b[0] == 0) fail();
      if (b[1] < a[0]) fail();
      long long ned = b[1] - a[0];
      if (ned % b[0] != 0) fail();
      sum += ned / b[0], tot += ned / b[0] + 1;
      if (sum <= 200000) {
        for (long long i = 1; i <= ned / b[0]; i++) push_back('P');
        push_back('R');
      }
      if (sum <= 200000) {
        cout << "SMALL\n";
        reverse(ans.begin(), ans.end());
        cout << (long long)ans.size() << endl;
        for (auto i : ans) putchar(i);
      } else {
        cout << "BIG\n";
        cout << sum << endl;
      }
      exit(0);
    }
    if (b[0] == a[0]) {
      if (b[0] == 0) fail();
      if (b[1] < a[1]) fail();
      long long ned = b[1] - a[1];
      if (ned % b[0] != 0) fail();
      sum += ned / b[0], tot += ned / b[0] + 1;
      if (sum <= 200000) {
        for (long long i = 1; i <= ned / b[0]; i++) push_back('P');
        push_back('R');
      }
      if (sum <= 200000) {
        cout << "SMALL\n";
        reverse(ans.begin(), ans.end());
        cout << (long long)ans.size() << endl;
        for (auto i : ans) putchar(i);
      } else {
        cout << "BIG\n";
        cout << sum << endl;
      }
      exit(0);
    }
    if (b[0] == 0) fail();
    tot += b[1] / b[0];
    sum += b[1] / b[0];
    if (sum <= 200000) {
      for (long long i = 1; i <= b[1] / b[0]; i++) push_back('P');
    }
    b[1] %= b[0];
  }
  if (a != b) swap(b[0], b[1]), tot++, push_back('R');
  if (sum <= 200000) {
    cout << "SMALL\n";
    reverse(ans.begin(), ans.end());
    cout << (long long)ans.size() << endl;
    for (auto i : ans) putchar(i);
  } else {
    cout << "BIG\n";
    cout << sum << endl;
  }
  exit(0);
}
bool inc(vector<long long> x) {
  for (long long i = 1; i < n; i++) {
    if (x[i] < x[i - 1]) return 0;
  }
  return 1;
}
bool dec(vector<long long> x) {
  for (long long i = 1; i < n; i++) {
    if (x[i] > x[i - 1]) return 0;
  }
  return 1;
}
bool alz(vector<long long> x) {
  for (long long i = 0; i < n - 1; i++)
    if (x[i] != 0) return 0;
  return 1;
}
void print(vector<long long> x) {
  for (long long i : x) printf("%lld ", i);
  cout << "\n";
}
void solve3() {
  long long tot = 0, sum = 0;
  while (a != b && !rsame(a, b)) {
    if (alz(b)) fail();
    if (dec(b)) reverse(b.begin(), b.end()), tot++, push_back('R');
    if (!inc(b)) fail();
    sum++;
    tot++;
    push_back('P');
    for (long long i = n - 1; i > 0; i--) b[i] -= b[i - 1];
  }
  if (a != b) reverse(b.begin(), b.end()), tot++, push_back('R');
  if (sum <= 200000) {
    cout << "SMALL\n";
    cout << ans.size() << endl;
    reverse(ans.begin(), ans.end());
    for (auto i : ans) putchar(i);
  } else {
    cout << "BIG\n";
    cout << sum << endl;
  }
}
signed main() {
  cin >> n;
  a.resize(n), b.resize(n);
  for (long long i = 0; i < n; i++) a[i] = read();
  for (long long i = 0; i < n; i++) b[i] = read();
  if (n >= 3)
    solve3();
  else if (n == 2)
    solve2();
  else
    solve1();
  return 0;
}
