#include using namespace std; using ll=long long; using ull=unsigned long long; using pll=pair; using tll=tuple; using ld=long double; constexpr ll INF=(1ll<<60); #define rep(i,n) for (ll i=0;i<(ll)(n);i++) #define replr(i,l,r) for (ll i=(ll)(l);i<(ll)(r);i++) #define all(v) v.begin(),v.end() #define len(v) ((ll)v.size()) template inline bool chmin(T &a,T b){ if(a>b){ a=b; return true; } return false; } template inline bool chmax(T &a,T b){ if(a struct wavelet_matrix{ int h=0,n; vector> sum; //[b]=bからb-1への向きの総和 vector center; wavelet_matrix(vector a):n(len(a)){ T mx=0; rep(i,n) chmax(mx,a[i]); while((1ll< dir(n); vector l,r; rep(i,n){ dir[i]=(a[i]>>b)&1; if(dir[i]==0) l.push_back(a[i]); else r.push_back(a[i]); } sum[b].assign(n+1,0); rep(i,n) sum[b][i+1]=sum[b][i]+dir[i]; center[b]=n-sum[b][n]; int l_sz=len(l),r_sz=len(r); rep(i,l_sz) a[i]=l[i]; rep(i,r_sz) a[l_sz+i]=r[i]; } } tuple get_subtree_range(int b,int l,int r){ int lc1=sum[b][l],lc0=l-lc1; int rc1=sum[b][r],rc0=r-rc1; int c=center[b]; return {lc0,rc0,c+lc1,c+rc1}; } T kth_smallest_rec(int b,int l,int r,int k){ if(b==0) return 0; auto [l0,r0,l1,r1]=get_subtree_range(b-1,l,r); int sz_0=r0-l0; if(k T binary_search(auto f,T ok,T ng){ while(1> n; vector a(n); rep(i,n) cin >> a[i]; wavelet_matrix w(a); ll q; cin >> q; while(q--){ ll l,r,x; cin >> l >> r >> x; l--; auto get=[&](ll k){ return w.kth_smallest(l,r,k); }; auto f=[&](ll k){ return get(k)<=x; }; ll ans=INF; if(!f(0)){ ans=abs(get(0)-x); }else{ ll k=binary_search(f,0,r-l); chmin(ans,abs(get(k)-x)); if(k+1