#include <bits/stdc++.h>
using namespace std;
int n;
long long a[200005], b[200005];
vector<pair<char, long long> > ans;
long long dfs1(long long a1, long long a2, long long b1, long long b2) {
  if (b1 <= 0 || b2 <= 0) {
    printf("IMPOSSIBLE\n");
    exit(0);
  }
  if (a1 == b1 && a2 == b2) return 0;
  if (a1 == b2 && a2 == b1) {
    ans.emplace_back(make_pair('R', 1));
    return 0;
  }
  if (b1 > b2) {
    ans.emplace_back(make_pair('R', 1));
    return dfs1(a1, a2, b2, b1);
  }
  if (b1 == a2) {
    if ((b2 - a1) % b1 == 0) {
      long long cnt = (b2 - a1) / b1;
      ans.emplace_back(make_pair('P', cnt));
      ans.emplace_back(make_pair('R', 1));
      return cnt;
    } else {
      printf("IMPOSSIBLE\n");
      exit(0);
    }
  } else if (b1 == a1) {
    if ((b2 - a2) % b1 == 0) {
      long long cnt = (b2 - a2) / b1;
      ans.emplace_back(make_pair('P', cnt));
      return cnt;
    } else {
      printf("IMPOSSIBLE\n");
      exit(0);
    }
  } else {
    long long cnt = (b2 - b2 % b1) / b1;
    ans.emplace_back(make_pair('P', cnt));
    return dfs1(a1, a2, b1, b2 % b1) + cnt;
  }
}
void dfs2() {
  bool ok = 1;
  for (int i = 1; i <= n; i++) {
    if (a[i] != b[i]) ok = 0;
  }
  if (ok) return;
  reverse(b + 1, b + 1 + n);
  ok = 1;
  for (int i = 1; i <= n; i++) {
    if (a[i] != b[i]) ok = 0;
  }
  if (ok) {
    ans.emplace_back(make_pair('R', 1));
    return;
  }
  reverse(b + 1, b + 1 + n);
  ok = 0;
  for (int i = 2; i <= n; i++) {
    if (b[i] >= b[i - 1]) ok = 1;
  }
  if (!ok) {
    reverse(b + 1, b + 1 + n);
    ans.emplace_back(make_pair('R', 1));
    for (int i = 2; i <= n; i++) {
      if (b[i] >= b[i - 1]) ok = 1;
    }
    if (!ok) {
      printf("IMPOSSIBLE\n");
      exit(0);
    }
  }
  for (int i = 1; i <= n; i++) {
    if (b[i] <= 0) {
      printf("IMPOSSIBLE\n");
      exit(0);
    }
  }
  ans.emplace_back(make_pair('P', 1));
  long long sum = b[1];
  for (int i = 2; i <= n; i++) {
    b[i] -= sum;
    sum += b[i];
  }
  dfs2();
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &a[i]);
  }
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &b[i]);
  }
  if (n == 1) {
    if (a[1] == b[1]) {
      printf("SMALL\n");
      printf("0\n");
    } else {
      printf("IMPOSSIBLE\n");
    }
  } else if (n == 2) {
    long long cnt = dfs1(a[1], a[2], b[1], b[2]);
    if (cnt > 2e5) {
      printf("BIG\n");
      printf("%lld\n", cnt);
      return 0;
    } else {
      reverse((ans).begin(), (ans).end());
      printf("SMALL\n");
      for (int i = 0; i < (int)(ans).size(); i++) {
        if (ans[i].first == 'R') cnt += ans[i].second;
      }
      printf("%d\n", cnt);
      for (int i = 0; i < (int)(ans).size(); i++) {
        for (int j = 0; j < ans[i].second; j++) {
          printf("%c", ans[i].first);
        }
      }
      printf("\n");
    }
  } else {
    dfs2();
    long long cnt = 0;
    for (int i = 0; i < (int)(ans).size(); i++) {
      if (ans[i].first == 'P') cnt += ans[i].second;
    }
    if (cnt > 2e5 || (int)(ans).size() > 5e5) {
      printf("BIG\n");
      printf("%lld\n", cnt);
      return 0;
    }
    reverse((ans).begin(), (ans).end());
    printf("SMALL\n");
    printf("%d\n", (int)(ans).size());
    for (int i = 0; i < (int)(ans).size(); i++) {
      for (int j = 0; j < ans[i].second; j++) {
        printf("%c", ans[i].first);
      }
    }
    printf("\n");
  }
}
