#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
long long powmod(long long a, long long b, long long MOD) {
  long long ans = 1;
  while (b) {
    if (b % 2) ans = ans * a % MOD;
    a = a * a % MOD;
    b /= 2;
  }
  return ans;
}
const int N = 2e5 + 111;
int n, a[N];
struct uzi {
  int a, sta;
} p[N];
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> a[i];
  int l = 1, r = n, top = 0;
  int L = -1, R = -1;
  while (l <= r) {
    if (l == r) {
      if (a[l] > p[top].a) {
        p[++top].a = a[l], p[top].sta = 1;
      }
      break;
    }
    if (a[l] == a[r]) {
      L = l, R = r;
      break;
    }
    if (a[l] < a[r]) {
      if (a[l] > p[top].a) {
        p[++top].a = a[l];
        p[top].sta = 1;
        l++;
      } else if (a[r] > p[top].a) {
        p[++top].a = a[r];
        p[top].sta = 0;
        r--;
      } else
        break;
    } else {
      if (a[r] > p[top].a) {
        p[++top].a = a[r];
        p[top].sta = 0;
        r--;
      } else if (a[l] > p[top].a) {
        p[++top].a = a[l];
        p[top].sta = 1;
        l++;
      } else
        break;
    }
  }
  int cnt = 0, qs = 0;
  int mid = L;
  if (L != -1) {
    int now = p[top].a;
    while (L <= R && a[L] > now) {
      cnt++;
      now = a[L];
      L++;
    }
  }
  if (R != -1) {
    int now = p[top].a;
    while (R >= mid && a[R] > now) {
      qs++;
      now = a[R];
      R--;
    }
  }
  cout << top + max(max(cnt, qs), 0) << endl;
  for (int i = 1; i <= top; i++) {
    if (p[i].sta)
      cout << "L";
    else
      cout << "R";
  }
  if (cnt > qs) {
    for (int i = 1; i <= cnt; i++) cout << "L";
  } else {
    for (int i = 1; i <= qs; i++) cout << "R";
  }
  return 0;
}
