静态区间最大值
rep(i, n) rmq[i][0] = a[i];
rep1(i, 18) rep(j, n) if (j + (1 << i) <= n)
rmq[j][i] = max(rmq[j][i - 1], rmq[j + (1 << i - 1)][i - 1]);
while (q --){
int l, r; scanf("%d%d", &l, &r); l --, r --;
int i; for (i = 0; (1 << i) <= r - l + 1; ++ i); i --;
printf("%d\n", max(rmq[l][i], rmq[r - (1 << i) + 1][i]));
}