int dp[1111][12];
int a[1111];
int n;
void RMQ_init()
{
for(int i=1;i<=n;i++)
{
dp[0]=a;
}
for(int j=1;(1<<j)<=n;j++)
{
for(int i=1;i+(1<<j)-1<=n;i++)
{
int m=(1<<(j-1))+i;
dp[j]=max(dp[j-1],dp[j-1]);
}
}
}
int RMQ(int L,int R)
{
int k=0;
while((1<<k)<=R-L+1) k++;
k--;
return max(dp[L][k],dp[R-(1<<k)+1][k]);
}