#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("sse4")
using namespace std;
void __print(int x) { cerr << x; }
void __print(long x) { cerr << x; }
void __print(long long x) { cerr << x; }
void __print(unsigned x) { cerr << x; }
void __print(unsigned long x) { cerr << x; }
void __print(unsigned long long x) { cerr << x; }
void __print(float x) { cerr << x; }
void __print(double x) { cerr << x; }
void __print(long double x) { cerr << x; }
void __print(char x) { cerr << '\'' << x << '\''; }
void __print(const char *x) { cerr << '\"' << x << '\"'; }
void __print(const string &x) { cerr << '\"' << x << '\"'; }
void __print(bool x) { cerr << (x ? "true" : "false"); }
template <typename T, typename V>
void __print(const pair<T, V> &x) {
  cerr << '{';
  __print(x.first);
  cerr << ',';
  __print(x.second);
  cerr << '}';
}
template <typename T>
void __print(const T &x) {
  int f = 0;
  cerr << '{';
  for (auto &i : x) cerr << (f++ ? "," : ""), __print(i);
  cerr << "}";
}
void _print() { cerr << "]\n"; }
template <typename T, typename... V>
void _print(T t, V... v) {
  __print(t);
  if (sizeof...(v)) cerr << ", ";
  _print(v...);
}
template <typename T, typename TT>
ostream &operator<<(ostream &os, const pair<T, TT> &t) {
  return os << t.first << " " << t.second;
}
template <typename T>
ostream &operator<<(ostream &os, const vector<T> &t) {
  for (auto &i : t) os << i << " ";
  return os;
}
template <typename T>
istream &operator>>(istream &is, vector<T> &v) {
  for (T &t : v) is >> t;
  return is;
}
template <typename T1, typename T2>
istream &operator>>(istream &is, vector<pair<T1, T2>> &v) {
  for (pair<T1, T2> &t : v) is >> t.first >> t.second;
  return is;
}
const long long mod = 1e9 + 7;
void solve() {
  long long n;
  cin >> n;
  vector<long long> v(n);
  cin >> v;
  string ans = "";
  long long ls = 0;
  long long i = 0, j = n - 1;
  vector<long long> l, r;
  set<long long> s;
  while (i < n and v[i] > ls) {
    l.push_back(v[i]);
    s.insert(v[i]);
    ls = v[i++];
  }
  ls = 0;
  while (j >= 0 and v[j] > ls) {
    r.push_back(v[j]);
    s.insert(v[j]);
    ls = v[j--];
  }
  reverse(l.begin(), l.end());
  reverse(r.begin(), r.end());
  for (auto x : s) {
    if (l.empty() and r.empty())
      break;
    else if (l.empty() and r.back() == x) {
      r.pop_back();
      ans += 'R';
    } else if (r.empty() and l.back() == x) {
      l.pop_back();
      ans += 'L';
    } else if (x == l.back() and x == r.back()) {
      if (l.size() > r.size()) {
        l.pop_back();
        ans += 'L';
      } else {
        r.pop_back();
        ans += 'R';
      }
    } else if (x == l.back()) {
      l.pop_back();
      ans += 'L';
    } else if (x == r.back()) {
      r.pop_back();
      ans += 'R';
    }
  }
  cout << ans.size() << '\n';
  cout << ans << '\n';
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  long long t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
