#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
void update(vector<long long> &b) {
  for (long long j = b.size() - 1; j > 0; j--) b[j] -= b[j - 1];
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long n;
  cin >> n;
  vector<long long> a(n), b(n);
  for (long long i = 0; i < n; i++) cin >> a[i];
  for (long long i = 0; i < n; i++) cin >> b[i];
  if (n == 1) {
    if (a == b) {
      cout << "SMALL\n0\n";
    } else {
      cout << "IMPOSSIBLE";
    }
    return 0;
  }
  long long M = 200000;
  string s = "";
  while (M > 0) {
    if (b == a) break;
    reverse((b).begin(), (b).end());
    if (b == a) {
      s += 'R';
      break;
    }
    reverse((b).begin(), (b).end());
    long long t = 1;
    for (long long j = 0; j + 1 < b.size(); j++)
      if (b[j] >= b[j + 1]) t = 0;
    if (t) {
      update(b);
      s += 'P', M--;
    } else {
      long long t = 1;
      reverse((b).begin(), (b).end());
      s += 'R';
      for (long long j = 0; j + 1 < b.size(); j++)
        if (b[j] >= b[j + 1]) t = 0;
      if (t == 0) {
        cout << "IMPOSSIBLE";
        return 0;
      }
      update(b);
      s += 'P', M--;
    }
  }
  if (a == b) {
    cout << "SMALL\n";
    cout << s.size() << "\n";
    reverse((s).begin(), (s).end());
    cout << s;
    return 0;
  }
  M += 2000000;
  while (M > 0) {
    if (b == a) break;
    reverse((b).begin(), (b).end());
    if (b == a) {
      s += 'R';
      break;
    }
    reverse((b).begin(), (b).end());
    long long t = 1;
    for (long long j = 0; j + 1 < b.size(); j++)
      if (b[j] >= b[j + 1]) t = 0;
    if (t) {
      update(b);
      s += 'P', M--;
    } else {
      long long t = 1;
      reverse((b).begin(), (b).end());
      s += 'R';
      for (long long j = 0; j + 1 < b.size(); j++)
        if (b[j] >= b[j + 1]) t = 0;
      if (t == 0) {
        cout << "IMPOSSIBLE";
        return 0;
      }
      update(b);
      s += 'P', M--;
    }
  }
  if (a == b) {
    cout << "BIG\n";
    cout << 2200000 - M << "\n";
    return 0;
  }
  assert(n == 2);
  long long op_done = 2200000;
  long long x = b[0], y = b[1];
  long long u = min(a[0], a[1]), v = max(a[0], a[1]);
  while (1) {
    if (x == u && y == v) {
      cout << "BIG\n";
      cout << op_done;
      return 0;
    }
    if (x > y) {
      swap(x, y);
      continue;
    }
    if (x == 0 || x == y) {
      cout << "IMPOSSIBLE";
      return 0;
    }
    if (x != u) {
      op_done += y / x;
      y = y % x;
    } else {
      long long diff = y - v;
      if (diff >= 0 && diff % x == 0) {
        cout << "BIG\n";
        cout << op_done + diff / x;
        return 0;
      } else {
        cout << "IMPOSSIBLE";
        return 0;
      }
    }
  }
}
