from math import isqrt from collections import defaultdict D = [0] * 2 * (10 ** 7 + 1) X = [[0 for _ in range(1<>= 6 Z[i][a] |= 1 << a0 return def dec(Z, a): for i in range(3, -1, -1): a0 = a & 63 a >>= 6 Z[i][a] ^= 1 << a0 if Z[i][a]: break return def bsl(Z, a): a += 1 for i in range(3, -1, -1): if Z[i][a >> 6] & (1 << (a & 63)) - 1: rep = ((a >> 6) << 6) | (Z[i][a >> 6] & (1 << (a & 63)) - 1).bit_length()-1 break a >>= 6 else: return -1 for j in range(i+1, 4): rep = (rep << 6) | Z[j][rep].bit_length()-1 return rep def bsr(Z, a): a -= 1 for i in range(3, -1, -1): ma = 0 if a & 63 != 63: ma = ~((1 << ((a&63)+1)) - 1) if Z[i][a >> 6] & ma: x = Z[i][a >> 6] & ma rep = ((a >> 6) << 6) | (x & -x).bit_length()-1 break a >>= 6 else: return -1 for j in range(i+1, 4): rep = (rep << 6) | (Z[j][rep] & -Z[j][rep]).bit_length()-1 return rep n, q = list(map(int, input().split())) Ans = [-1] * q A = list(map(int, input().split())) Q_size = isqrt(n) Q_cnt = (n + Q_size - 1) // Q_size Q = [[] for _ in range(Q_cnt)] for _ in range(q): *P, c = list(map(str, input().split())) l, r, x = list(map(int, P)) l -= 1 if c == "L": t = 0 else: t = 1 Q[l // Q_size].append((t, l, r, x, _)) for qi in range(Q_cnt): if not qi % 2: Q[qi].sort(key = lambda x: x[2]) else: Q[qi].sort(key = lambda x: -x[2]) def f0(a): D[a] += 1 if 1 < D[a]: global cnt0 cnt0 += 1 return al = bsl(X, a) ar = bsr(X, a) add(X, a) if al == -1 and ar == -1: pass elif ar == -1: D[al-a] += 1 if D[al-a] == 1: add(Y, a-al) elif al == -1: D[a-ar] += 1 if D[a-ar] == 1: add(Y, ar-a) else: D[al-ar] -= 1 if D[al-ar] == 0: dec(Y, ar-al) D[a-ar] += 1 if D[a-ar] == 1: add(Y, ar-a) D[al-a] += 1 if D[al-a] == 1: add(Y, a-al) def f1(a): D[a] -= 1 if D[a]: global cnt0 cnt0 -= 1 return dec(X, a) al = bsl(X, a) ar = bsr(X, a) if al == -1 and ar == -1: pass elif ar == -1: D[al-a] -= 1 if D[al-a] == 0: dec(Y, a-al) elif al == -1: D[a-ar] -= 1 if D[a-ar] == 0: dec(Y, ar-a) else: D[al-ar] += 1 if D[al-ar] == 1: add(Y, ar-al) D[a-ar] -= 1 if D[a-ar] == 0: dec(Y, ar-a) D[al-a] -= 1 if D[al-a] == 0: dec(Y, a-al) nl = nr = 0 cnt0 = 0 for qi in range(Q_cnt): for t, l, r, x, idx in Q[qi]: while l < nl: nl -= 1 f0(A[nl]) while nr < r: f0(A[nr]) nr += 1 while nl < l: f1(A[nl]) nl += 1 while r < nr: nr -= 1 f1(A[nr]) if not t: Ans[idx] = bsl(Y, x) if cnt0: Ans[idx] = max(Ans[idx], 0) else: Ans[idx] = bsr(Y, x) for ans in Ans: print(ans)