/*
بسم الله الرحمن الرحيم
Author:
                                                    (:Muhammad Aneeq:)
*/
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
#warning check the output
using namespace std;
#define int long long
int const N=1e5+10;
int s[N],f[N],dp[N];
int n,m;
inline void solve()
{
    cin >> n >> m;
    for (int i = 1;i <= n;i++) 
        cin >> s[i];
    for (int i = 1;i <= m;i++) 
        cin >> f[i];
    long long l = 0, r = 1e9, ans = -1;
    vector<pair<int, char>> fr(n + 1), bfr(n + 1);
    while(l <= r) {
        long long mid = (l + r) / 2;
        for (int i = 0;i <= n;i++) 
            dp[i] = 0, bfr[i] = { 0,'?' };
        for (int i = 0;i < n;i++) 
        {
            if (dp[i] > dp[i + 1]) 
            {
                dp[i + 1] = dp[i];
                bfr[i + 1] = { i,'L' };
            }
            int lx = s[i + 1] - mid, rx = s[i + 1];
            if (f[dp[i] + 1] >= lx && f[dp[i] + 1] <= rx) 
            {
                int x = upper_bound(f + 1 + dp[i], f + 1 + m, rx) - f - 1;
                if (dp[i + 1] < x) {
                    dp[i + 1] = x;
                    bfr[i + 1] = { i,'L' };
                }
            }
            lx = s[i + 1], rx = s[i + 1] + mid;
            if (f[dp[i] + 1] >= lx && f[dp[i] + 1] <= rx)
             {
                int x = upper_bound(f + 1 + dp[i], f + 1 + m, rx) - f - 1;
                if (dp[i + 1] < x) {
                    dp[i + 1] = x;
                    bfr[i + 1] = { i,'R' };
                }
            }
            if (i + 2 <= n) {
                int llx = s[i + 2] - mid, rrx = s[i + 2];
                if (llx < lx && (f[dp[i] + 1] >= lx && f[dp[i] + 1] <= rx) || (f[dp[i] + 1] >= llx && f[dp[i] + 1] <= rrx))
                {
                    int x = upper_bound(f + 1 + dp[i], f + 1 + m, rx) - f - 1;
                    if (dp[i + 2] < x)
                    {
                        dp[i + 2] = x;
                        bfr[i + 2] = { i,'?' };
                    }
                }
            }
        }
        if (dp[n] == m) 
        {
            r = mid - 1;
            ans = mid;
            swap(fr, bfr);
        }
        else l = mid + 1;
    }
    cout << ans << '\n';
    if (ans == -1) return;
    int x = n;
    vector<char> answ(n + 1);
    while (x > 0) {
        if (fr[x].second == '?') {
            answ[x] = 'L', answ[x - 1] = 'R';
            x -= 2;
        }
        else {
            answ[x] = fr[x].second;
            x--;
        }
    }
    for (int i = 1;i <= n;i++) cout << answ[i];
        cout<<endl;
}
signed main()
{
        ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
        int t=1;
        for (int i=1;i<=t;i++)
        {
                solve();
        }
}
Compilation message (stderr)
Main.cpp:11:2: warning: #warning check the output [-Wcpp]
   11 | #warning check the output
      |  ^~~~~~~| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |