int block;//每块大小
int num;//块数
int l[maxn];//第i块的左边界
int r[maxn];//第i块的右边界
int belong[maxn];//第i个位置属于那块
void Build()
{
block = sqrt(n); num = n/block; if ( n%block ) num++;
for ( int i=1 ; i<=num ; i++ )
l[i] = (i-1)*block,r[i] = i*block-1;
r[num] = n-1;
for ( int i=0 ; i<n ; i++ )
belong[i] = i/block+1;
}