#include <bits/stdc++.h>
using namespace std;
const long long int BIG_INT = 200000;
const long long int SMALL_INT = 500000;
bool areequal(long long int a[], long long int b[], int n) {
  bool equals = true;
  for (int i = 0; (i < n) && equals; i++)
    if (a[i] != b[i]) equals = false;
  return equals;
}
bool reverseeq(long long int a[], long long int b[], int n) {
  bool revequal = true;
  for (int i = 0; (i < n) && revequal; i++)
    if (a[i] != b[n - 1 - i]) revequal = false;
  return revequal;
}
void reversearr(long long int a[], int n) {
  long long int reversed[n];
  for (int i = 0; i < n; i++) reversed[i] = a[n - 1 - i];
  for (int i = 0; i < n; i++) a[i] = reversed[i];
}
int main() {
  int n;
  cin >> n;
  long long int 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 << "IMPOSSIBLE" << endl;
    else
      cout << "SMALL" << endl << 0 << endl << "" << endl;
  } else if (n == 2) {
    map<pair<long long int, long long int>, vector<pair<char, long long int> > >
        operations_count;
    vector<pair<char, long long int> > operations;
    vector<pair<long long int, long long int> > states;
    while ((b[0] > 0) && (b[1] > 0)) {
      states.push_back(make_pair(b[0], b[1]));
      operations_count[make_pair(b[0], b[1])] = operations;
      if (b[0] > b[1]) {
        operations.push_back(make_pair('R', 1)), swap(b[0], b[1]);
        states.push_back(make_pair(b[0], b[1]));
        operations_count[make_pair(b[0], b[1])] = operations;
      }
      operations.push_back(make_pair('P', b[1] / b[0])), b[1] = b[1] % b[0];
    }
    vector<pair<char, long long int> > ops;
    bool foundsoln = false;
    for (int i = 0; (i < states.size()) && (!foundsoln); i++) {
      long long int x = states[i].first, y = states[i].second;
      if ((x == a[0]) || (x == a[1])) {
        long long int other = (x == a[0]) ? a[1] : a[0];
        if ((y <= x) && (y != other))
          break;
        else if ((y >= other) && ((y - other) % x == 0)) {
          long long int q = (y - other) / x;
          ops = operations_count[states[i]];
          ops.push_back(make_pair('P', q));
          if (x != a[0]) ops.push_back(make_pair('R', 1));
          foundsoln = true;
        }
      }
    }
    if (foundsoln) {
      long long int pre = 0, rev = 0;
      for (int i = 0; i < ops.size(); i++) {
        if (ops[i].first == 'P')
          pre += ops[i].second;
        else
          rev += ops[i].second;
      }
      if (pre > BIG_INT)
        cout << "BIG" << endl << pre << endl;
      else if ((pre + rev) <= SMALL_INT) {
        cout << "SMALL" << endl << pre + rev << endl;
        for (int i = ops.size() - 1; i >= 0; i--)
          for (int j = 0; j < ops[i].second; j++) cout << ops[i].first;
        cout << endl;
      }
    } else
      cout << "IMPOSSIBLE" << endl;
  } else {
    vector<char> operations;
    bool possible = true;
    int prefix = 0, rev = 0;
    while (possible && (!areequal(a, b, n))) {
      if (reverseeq(a, b, n)) {
        reversearr(b, n);
        rev++, operations.push_back('R');
      } else {
        bool leftinc = true, rightinc = false;
        for (int i = 0; leftinc && (i < n - 1); i++)
          if (b[i] >= b[i + 1]) leftinc = false;
        if (!leftinc) {
          rightinc = true;
          for (int i = n - 1; rightinc && (i > 0); i--)
            if (b[i - 1] <= b[i]) rightinc = false;
        }
        if ((!leftinc) && (!rightinc))
          possible = false;
        else {
          if (rightinc) {
            reversearr(b, n);
            rev++, operations.push_back('R');
          }
          for (int i = n - 1; i > 0; i--) b[i] -= b[i - 1];
          prefix++, operations.push_back('P');
        }
      }
    }
    if (!possible)
      cout << "IMPOSSIBLE" << endl;
    else {
      if (prefix > BIG_INT)
        cout << "BIG" << endl << prefix << endl;
      else if ((prefix + rev) <= SMALL_INT) {
        cout << "SMALL" << endl << (prefix + rev) << endl;
        for (int i = operations.size() - 1; i >= 0; i--) cout << operations[i];
        cout << endl;
      }
    }
  }
  return 0;
}
