int dp[maxn][20];
void RMQinit(int n) {
for (int i = 1; i <= n; i++) {
dp[i][0] = height[i];
}
int m = int(log((double)n) / log(2.0));
for (int i = 1; i <= m; i++) {
for (int j = 1; j + (1 << i) - 1 <= n; j++)
dp[j][i] = min(dp[j][i - 1], dp[j + (1 << (i-1))][i - 1]);
}
}
int Querymin(int l, int r) {
int k = int(log(double(r - l + 1)) / log(2.0));
return min(dp[l][k], dp[r - (1 << k) + 1][k]);
}