#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
bool operator==(vector<long long> &A, vector<long long> &B) {
  for (int i = 0; i < A.size(); i++)
    if (A[i] != B[i]) return false;
  return true;
}
vector<long long> rev(vector<long long> &A) {
  vector<long long> B = A;
  reverse(B.begin(), B.end());
  return B;
}
void diff(vector<long long> &A) {
  for (int i = A.size() - 1; i; i--) A[i] -= A[i - 1];
}
vector<char> ans;
int main() {
  int n;
  cin >> n;
  vector<long long> a(n), b(n);
  for (int i = 0; i < n; i++) scanf("%lld", &a[i]);
  for (int i = 0; i < n; i++) scanf("%lld", &b[i]);
  if (n == 1) {
    if (a[0] == b[0]) {
      puts("SMALL");
      printf("0\n\n");
    } else
      puts("IMPOSSIBLE");
    return 0;
  }
  long long countr = 0, countp = 0;
  bool f = false, d1 = false;
  if (n > 2) {
    while (!(a == b || a == rev(b))) {
      for (int i = 0; i < n - 1; i++)
        if (b[i] >= b[i + 1]) {
          b = rev(b);
          countr++;
          ans.push_back('R');
          break;
        }
      diff(b);
      countp++;
      if (countp > 2e5) d1 = true;
      if (!d1) ans.push_back('P');
      for (int i = 0; i < n; i++) {
        if (b[i] < 0) {
          puts("IMPOSSIBLE");
          return 0;
        }
      }
    }
    if (a == rev(b)) {
      countr++;
      ans.push_back('R');
    }
  } else {
    while (1) {
      if (a[1] == b[0]) {
        swap(a[1], a[0]);
        f = true;
      }
      if (b[0] == a[0]) {
        if (b[1] < a[1]) {
          puts("IMPOSSIBLE");
          return 0;
        }
        long long p = (b[1] - a[1]) % b[0];
        if (!p) {
          long long u = (b[1] - a[1]) / b[0];
          countp += u;
          if (countp > 2e5) d1 = true;
          if (!d1)
            for (int i = 0; i < u; i++) ans.push_back('P');
        } else {
          puts("IMPOSSIBLE");
          return 0;
        }
        break;
      }
      if (b[0] < a[0]) {
        puts("IMPOSSIBLE");
        return 0;
      }
      long long &x = b[0], &y = b[1];
      long long u = (y - y % x) / x;
      y %= x;
      countp += u;
      if (countp > 2e5) d1 = true;
      if (!d1) {
        for (int i = 0; i < u; i++) ans.push_back('P');
      }
      swap(x, y);
      countr++;
      ans.push_back('R');
    }
  }
  if (f) {
    countr++;
    ans.push_back('R');
  }
  reverse(ans.begin(), ans.end());
  if (countp > 2e5) {
    puts("BIG");
    printf("%lld\n", countp);
  } else {
    puts("SMALL");
    cout << ans.size() << endl;
    for (auto t : ans) cout << t;
    printf("\n");
  }
  return 0;
}
