#include <bits/stdc++.h>
void err() { std::cout << std::endl; }
template <typename T, typename... Args>
void err(T a, Args... args) {
  std::cout << a << ' ';
  err(args...);
}
template <template <typename...> class T, typename t, typename... A>
void err(const T<t>& arg, const A&... args) {
  for (auto& v : arg) std::cout << v << ' ';
  err(args...);
}
using namespace std;
const int N = 1e5 + 5;
bool operator==(vector<long long>& A, vector<long long>& B) {
  for (int i = 0; i < (int)(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 D(vector<long long>& A) {
  for (int i = A.size() - 1; i; i--) A[i] -= A[i - 1];
}
void out(long long cntp, long long cntr, vector<char>& ans) {
  reverse((ans).begin(), (ans).end());
  if (cntp > 2e5) {
    cout << "BIG" << '\n';
    cout << cntp << '\n';
  } else {
    cout << "SMALL" << '\n';
    cout << (int)(ans).size() << '\n';
    for (auto it : ans) cout << it;
    cout << '\n';
  }
}
void run() {
  int n;
  cin >> n;
  vector<long long> a(n), b(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < n; i++) {
    cin >> b[i];
  }
  if (n == 1) {
    if (a[0] == b[0]) {
      cout << "SMALL" << '\n';
      cout << 0 << '\n' << '\n';
    } else {
      cout << "IMPOSSIBLE" << '\n';
    }
    return;
  }
  long long cntr = 0, cntp = 0;
  vector<char> ans;
  bool BIG = false, f = 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);
          cntr++;
          ans.push_back('R');
          break;
        }
      D(b), ++cntp;
      if (cntp > 2e5) BIG = true;
      if (!BIG) ans.push_back('P');
      for (int i = 0; i < n; i++) {
        if (b[i] < 0) {
          cout << "IMPOSSIBLE" << '\n';
          return;
        }
      }
    }
    if (a == rev(b)) f = true;
  } else {
    while (1) {
      if (b[0] == a[1]) {
        swap(a[0], a[1]);
        f = true;
      }
      if (b[0] == a[0]) {
        if (b[1] < a[1]) {
          cout << "IMPOSSIBLE" << '\n';
          return;
        }
        long long r = (b[1] - a[1]) % b[0];
        if (r == 0) {
          long long now = ((b[1] - a[1]) / b[0]);
          cntp += now;
          if (cntp > 2e5) BIG = true;
          if (!BIG)
            for (int i = 0; i < now; i++) {
              ans.push_back('P');
            }
        } else {
          cout << "IMPOSSIBLE" << '\n';
          return;
        }
        break;
      }
      if (b[0] < a[0]) {
        cout << "IMPOSSIBLE" << '\n';
        return;
      }
      long long &x = b[0], &y = b[1];
      long long now = (y - y % x) / x;
      y %= x;
      cntp += now;
      if (cntp > 2e5) BIG = true;
      if (!BIG)
        for (int i = 0; i < now; i++) {
          ans.push_back('P');
        }
      swap(x, y), ++cntr;
      ans.push_back('R');
    }
  }
  if (f) {
    ++cntr;
    ans.push_back('R');
  }
  out(cntp, cntr, ans);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout << fixed << setprecision(20);
  run();
  return 0;
}
