#include <bits/stdc++.h>
using namespace std;
long long* reverse(long long* b, int n) {
  long long* b2 = new long long[n];
  for (int i = 0; i < n; i++) b2[i] = b[n - 1 - i];
  return b2;
}
void print(vector<char> v) {
  cout << "SMALL" << endl << v.size() << endl;
  string s;
  for (int i = v.size() - 1; i >= 0; i--) s.push_back(v[i]);
  cout << s << endl;
  return;
}
bool increasing(long long* b, int n) {
  for (int i = 1; i < n; i++)
    if (b[i] <= b[i - 1]) return false;
  return true;
}
void f(long long* a, long long* b, int n) {
  vector<char> v;
  while (true) {
    long long* b2 = reverse(b, n);
    if (memcmp(a, b, n * sizeof(long long)) == 0) {
      delete[] b2;
      print(v);
      return;
    }
    if (memcmp(a, b2, n * sizeof(long long)) == 0) {
      delete[] b2;
      v.push_back('R');
      print(v);
      return;
    }
    if (increasing(b2, n)) {
      memcpy(b, b2, n * sizeof(long long));
      v.push_back('R');
    } else if (!increasing(b, n)) {
      cout << "IMPOSSIBLE" << endl;
      delete[] b2;
      return;
    }
    delete[] b2;
    for (int i = n - 1; i >= 1; i--) b[i] -= b[i - 1];
    v.push_back('P');
  }
}
void f2(long long* a, long long* b) {
  long long cont = 0;
  long long A[2];
  long long B[2];
  A[0] = a[0];
  A[1] = a[1];
  B[0] = b[0];
  B[1] = b[1];
  sort(a, a + 2);
  while (true) {
    long long* b2 = reverse(b, 2);
    if (memcmp(a, b, 2 * sizeof(long long)) == 0 ||
        memcmp(a, b2, 2 * sizeof(long long)) == 0) {
      delete[] b2;
      if (cont > 200000)
        cout << "BIG" << endl << cont << endl;
      else
        f(A, B, 2);
      return;
    }
    delete[] b2;
    sort(b, b + 2);
    if (b[0] == b[1] || a[1] > b[1]) {
      cout << "IMPOSSIBLE" << endl;
      return;
    }
    if (a[0] == b[0]) {
      long long x = (b[1] - a[1]) / b[0];
      if (b[1] == a[1] + b[0] * x) {
        cont += x;
        b[1] = a[1];
        continue;
      } else {
        cout << "IMPOSSIBLE" << endl;
        return;
      }
    }
    cont += b[1] / b[0];
    b[1] = b[1] % b[0];
    if (b[1] == 0) {
      cout << "IMPOSSIBLE" << endl;
      return;
    }
  }
}
void f3(long long* a, long long* b) {
  long long cont = 0;
  long long A[3];
  long long B[3];
  A[0] = a[0];
  A[1] = a[1];
  A[2] = a[2];
  B[0] = b[0];
  B[1] = b[1];
  B[2] = b[2];
  while (true) {
    long long* b2 = reverse(b, 3);
    if (memcmp(a, b, 3 * sizeof(long long)) == 0 ||
        memcmp(a, b2, 3 * sizeof(long long)) == 0) {
      delete[] b2;
      if (cont > 200000)
        cout << "BIG" << endl << cont << endl;
      else
        f(A, B, 3);
      return;
    }
    delete[] b2;
    if (b[0] > b[1] && b[1] > b[2]) swap(b[0], b[2]);
    if (b[0] >= b[1] || b[1] >= b[2] || a[1] > b[1]) {
      cout << "IMPOSSIBLE" << endl;
      return;
    }
    long long x = (b[1] - a[1]) / b[0];
    if (x == 0 || 2 * b[2] / x < 2 * b[1] - b[0] * (x - 1)) {
      cout << "IMPOSSIBLE" << endl;
      return;
    }
    cont += x;
    b[2] -= b[1] * x - b[0] * x * (x - 1) / 2;
    b[1] -= b[0] * x;
    if (b[2] == 0) {
      cout << "IMPOSSIBLE" << endl;
      return;
    }
  }
}
int main() {
  int n;
  long long a[200000];
  long long b[200000];
  cin >> 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" << endl << 0 << endl << endl;
    else
      cout << "IMPOSSIBLE" << endl;
  } else if (n == 2)
    f2(a, b);
  else if (n == 3)
    f3(a, b);
  else
    f(a, b, n);
  return 0;
}
