#include <bits/stdc++.h>
using namespace std;
int infinito = 1000000000;
int n;
int f[1002];
int m[1002][101][2];
int ej[1002][101][2];
list<char> sol;
vector<list<char>::iterator> genera(int i, int j, int k) {
  vector<list<char>::iterator> vi;
  if (i == n - 1) {
    for (int paso = 0; paso < f[i]; paso++) {
      sol.push_back('A');
      sol.push_back('R');
      sol.push_back('A');
      sol.push_back('L');
      sol.push_back('A');
      vi.push_back(--sol.end());
    }
    return vi;
  }
  int i1 = i + 1;
  int j1 = ej[i][j][k];
  int k1 = 0;
  if (k == 1 and m[i1][j1][1] < m[i1][j1][0]) k1 = 1;
  vector<list<char>::iterator> viaux = genera(i1, j1, k1);
  list<char>::iterator it;
  it = sol.begin();
  for (; j > j1; j--) {
    sol.insert(it, 'A');
    sol.insert(it, 'R');
    sol.insert(it, 'A');
    sol.insert(it, 'L');
    sol.insert(it, 'A');
    it--;
    vi.push_back(it);
    it++;
  }
  sol.insert(it, 'A');
  sol.insert(it, 'R');
  for (int paso = j1 - j; paso < j1; paso++) {
    it = viaux[paso];
    vi.push_back(it);
    sol.insert(it, 'L');
    if (paso < j1 - 1 or k == 1) {
      it++;
      sol.insert(it, 'A');
      sol.insert(it, 'R');
    }
  }
  return vi;
}
int main() {
  cin >> n;
  int tope = 0;
  int maximof = 0;
  for (int i = 0; i < n; i++) {
    cin >> f[i];
    tope = max(tope, f[i]);
    if (f[i] > 0) maximof = i;
  }
  tope++;
  n = maximof + 1;
  for (int i = n - 1; i >= 0; i--) {
    if (i == n - 1) {
      for (int j = 0; j < tope; j++) {
        if (j != f[i])
          m[i][j][0] = m[i][j][1] = infinito;
        else {
          m[i][j][0] = 5 * f[i];
          m[i][j][1] = infinito;
        }
      }
    } else {
      for (int j = 0; j < tope; j++) {
        m[i][j][0] = m[i][j][1] = infinito;
        if (j >= f[i]) {
          int i1 = i + 1;
          for (int j1 = 0; j1 < tope; j1++) {
            int n0 = 0, n1 = 0;
            int jj = j;
            if (jj > j1) {
              n0 += 5 * (jj - j1);
              n1 += 5 * (jj - j1);
              jj = j1;
            }
            if (jj == 0)
              n0 = infinito;
            else
              n0 += m[i1][j1][0] + 3 * jj;
            n1 += min(m[i1][j1][0], m[i1][j1][1]) + 3 * jj + 2;
            if (n0 <= m[i][j][0]) {
              m[i][j][0] = n0;
              ej[i][j][0] = j1;
            }
            if (n1 <= m[i][j][1]) {
              m[i][j][1] = n1;
              ej[i][j][1] = j1;
            }
          }
        }
      }
    }
  }
  {
    int jmin, kmin;
    int minimo = infinito;
    for (int j = 0; j < tope; j++) {
      if (minimo > m[0][j][0]) {
        minimo = m[0][j][0];
        jmin = j;
        kmin = 0;
      }
      if (minimo > m[0][j][1]) {
        minimo = m[0][j][1];
        jmin = j;
        kmin = 1;
      }
    }
    genera(0, jmin, kmin);
    for (list<char>::iterator it = sol.begin(); it != sol.end(); it++)
      cout << *it;
    cout << endl;
  }
}
