n = int(input()) *a, = map(int,input().split()) def merge(a,b): la,lb = len(a),len(b) res = [0]*(la+lb) ia = ib = 0 for i in range(la+lb): if ib==lb: res[i:] = a[ia:] return res if ia==la: res[i:] = b[ib:] return res if a[ia] < b[ib]: res[i] = a[ia] ia += 1 else: res[i] = b[ib] ib += 1 return res N0 = 1<<(n-1).bit_length() dat = [[]]*(2*N0) for i in range(n): dat[N0+i] = [a[i]] for k in range(N0-1,0,-1): dat[k] = merge(dat[2*k], dat[2*k+1]) def getans(lst,x): v = INF idx = bisect_left(lst,x) if idx < len(lst): v = lst[idx]-x if idx: v = min(v,x-lst[idx-1]) return v INF = 10**9 from bisect import bisect_left, bisect_right Q = int(input()) for _ in range(Q): L,R,x = map(int,input().split()) L += N0-1; R += N0 ans = INF while L < R: if R & 1: R -= 1 ans = min(ans,getans(dat[R],x)) if L & 1: ans = min(ans,getans(dat[L],x)) L += 1 L >>= 1; R >>= 1 print(ans)