#include #include #include using namespace std; const int maxn=100005; int n,q,now,x,s,l,r; int v[maxn],cnt[maxn],num[maxn],left[maxn],right[maxn]; int d[maxn][20]; void RMQ_init(int *A,int n) { for(int i=0;iR) return 0; int k=0; while((1<<(k+1))<=R-L+1) k++; return max(d[L][k],d[R-(1<0) { scanf("%d%d",&l,&r); l--;r--; if(num[l]==num[r]) printf("%d\n",r-l+1); else printf("%d\n",max(max(right[l]-l+1,r-left[r]+1) ,RMQ(num[l]+1,num[r]-1))); } } return 0; }