int n, q; int lg[maxn], st_min[maxn][30], st_max[maxn][30];
voidinit(){ cin>>n>>q; for(int i = 2 ; i <= n ; i ++){ lg[i] = lg[i/2] + 1; } for(int i = 1 ; i <= n ; i ++){ cin>>st_min[i][0]; st_max[i][0] = st_min[i][0]; } for(int i = 1 ; i <= lg[n] ; i ++){ for(int j = 1 ; j + (1<<i) - 1 <= n ; j ++){ st_max[j][i] = max(st_max[j][i-1], st_max[j + (1<<(i-1))][i-1]); st_min[j][i] = min(st_min[j][i-1], st_min[j + (1<<(i-1))][i-1]); } } }
voidsolve(){ int a, b; cin>>a>>b; int k = lg[b-a+1]; int max_ = max(st_max[a][k], st_max[b-(1<<k)+1][k]); int min_ = min(st_min[a][k], st_min[b-(1<<k)+1][k]); cout<<max_ - min_<<"\n"; }