package main
import (
"bufio"
"fmt"
"io"
"os"
)
func nextInt(data []byte, idx *int) int {
n := len(data)
for *idx < n && (data[*idx] < '0' || data[*idx] > '9') {
*idx = *idx + 1
}
num := 0
for *idx < n && data[*idx] >= '0' && data[*idx] <= '9' {
num = num*10 + int(data[*idx]-'0')
*idx = *idx + 1
}
return num
}
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
n := nextInt(data, &idx)
a := make([]int, n)
for i := 0; i < n; i++ {
a[i] = nextInt(data, &idx)
}
l, r := 0, n-1
last := 0
res := make([]byte, 0, n)
for l <= r {
leftOK := a[l] > last
rightOK := a[r] > last
if !leftOK && !rightOK {
break
}
if leftOK && !rightOK {
last = a[l]
l++
res = append(res, 'L')
} else if !leftOK && rightOK {
last = a[r]
r--
res = append(res, 'R')
} else {
if a[l] < a[r] {
last = a[l]
l++
res = append(res, 'L')
} else if a[l] > a[r] {
last = a[r]
r--
res = append(res, 'R')
} else {
x := a[l]
lenL := 1
prev := x
for i := l + 1; i <= r; i++ {
if a[i] > prev {
lenL++
prev = a[i]
} else {
break
}
}
lenR := 1
prev = x
for i := r - 1; i >= l; i-- {
if a[i] > prev {
lenR++
prev = a[i]
} else {
break
}
}
if lenL >= lenR {
for i := 0; i < lenL; i++ {
res = append(res, 'L')
}
} else {
for i := 0; i < lenR; i++ {
res = append(res, 'R')
}
}
break
}
}
}
out := bufio.NewWriterSize(os.Stdout, 1<<20)
fmt.Fprintln(out, len(res))
fmt.Fprintln(out, string(res))
out.Flush()
}