#include <bits/stdc++.h>
using namespace std;
long long int power(long long int a, long long int b) {
  long long int res = 1;
  while (b) {
    if (b % 2 == 1) res = (res * a) % 1000000007;
    a = (a * a) % 1000000007;
    b /= 2;
  }
  return res;
}
bool comp(long long int a, long long int b) { return a < b; }
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long int t, n, m, temp, k, i, l, r, j, x, y, z,
      mx = LONG_LONG_MIN, mn = LONG_LONG_MAX, ans = 0, cnt = 1, curr = -1, prev,
      sum = 0, flag, i1 = -1, i2 = -1;
  string s;
  cin >> n;
  long long int a[n];
  for (i = 0; i <= n - 1; i++) {
    cin >> a[i];
  }
  i1 = 0;
  i2 = n - 1;
  queue<char> mq;
  while ((a[i1] > curr || a[i2] > curr) && i1 <= i2 && i1 < n && i2 < n &&
         i1 > -1 && i2 > -1) {
    if (curr < a[i1] && curr < a[i2]) {
      if (a[i1] < a[i2]) {
        curr = a[i1];
        i1++;
        mq.push('L');
      } else if (a[i1] > a[i2]) {
        curr = a[i2];
        i2--;
        mq.push('R');
      } else {
        x = i1;
        while (x < i2 && a[x + 1] > a[x]) {
          x++;
        }
        y = i2;
        while (y > i1 && a[y - 1] > a[y]) {
          y--;
        }
        if (i2 - y >= x - i1) {
          curr = a[i2];
          i2--;
          mq.push('R');
        } else {
          curr = a[i1];
          i1++;
          mq.push('L');
        }
      }
    } else if (curr < a[i1]) {
      curr = a[i1];
      i1++;
      mq.push('L');
    } else if (curr < a[i2]) {
      curr = a[i2];
      i2--;
      mq.push('R');
    } else {
      break;
    }
  }
  cout << mq.size() << "\n";
  while (!mq.empty()) {
    cout << mq.front();
    mq.pop();
  }
  return 0;
}
