#include using std::cin; using std::cout; using std::vector; using ll=long long; #define endl "\n"; const int inf=INT_MAX; //セグ木 struct Segtree{ int N; vector node; Segtree(int n){ N=1; while(N=N-1) return l; int left_ind=lower_bound(left,val,now*2+1,l,(l+r)/2); if(left_ind==(l+r)/2) return lower_bound(left,val,now*2+2,(l+r)/2,r); return left_ind; } }; int main(){ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); //入力、宣言 int N; cin>>N; vector X(N); for(int i=0;i>X[i]; int Q; cin>>Q; vector l(Q),r(Q),x(Q),ans(Q,inf); for(int i=0;i>l[i]>>r[i]>>x[i]; l[i]--; r[i]--; } //本題。1 回目では x≤X_i を満たすものについて、2 回目では x≥X_i を満たすものについて求めている。 for(int _=0;_<2;_++){ //座圧 vector comp(N),rev(N); { vector> memo(N); for(int i=0;i> left(N),ind(N); for(int i=0;i