using System; using System.Collections.Generic; using System.Collections; using System.Collections.Specialized; using System.Linq; using System.Text; using System.IO; using System.Reflection; using static System.Math; using System.Numerics; //using nint=System.Int32; static class Program{ const int mod=(int)1e9+7; const double eps=1e-11; static void Main(){ Sc sc=new Sc(); var n=sc.I; var a=sc.Ia; var wm=new Wm(a); Spt spt=new Spt(a,false); int ans=int.MaxValue; for(int i = 1;i Fu; public Spt(int[] a,bool bo){ int n=a.Length,m=(int)Log(n,2)+1; d=new int[m][]; d[0]=new int[n]; l=new int[n+1]; if(bo){Fu=(y,x)=>Max(y,x);} else{Fu=(y,x)=>Min(y,x);} for(int i=0;i>1]+1; } for(int i=1,k=1;ib){(a,b)=(b,a);} int p=l[b-a]; return Fu(d[p][a],d[p][b+1-(1<=0;i--) { if(((k>>i)&1)==1){ r=ra[i][r+1]+za[i]-1; l=ra[i][l+1]+za[i]-1; } else{ r=r-ra[i][r+1]; l=l-ra[i][l+1]; } } return r-l; } public int Rl(int l,int r,long k){ l--; int p=0; for(int i = b;i>=0;i--) { if(((k>>i)&1)==1){ p+=r-l; r=ra[i][r+1]+za[i]-1; l=ra[i][l+1]+za[i]-1; p-=r-l; } else{ r=r-ra[i][r+1]; l=l-ra[i][l+1]; } } return p; } public int Rm(int l,int r,long k){ l--; int p=0; for(int i = b;i>=0;i--) { if(((k>>i)&1)==1){ r=ra[i][r+1]+za[i]-1; l=ra[i][l+1]+za[i]-1; } else{ p+=r-l; r=r-ra[i][r+1]; l=l-ra[i][l+1]; p-=r-l; } } return p; } public int Qt(int l,int r,int k){ l--; int p=0; for(int i = b;i>=0;i--) { if((r-ra[i][r+1])-(l-ra[i][l+1])(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i