#include<stdio.h>
FILE*fin=fopen("cuburi2.in","r");
FILE*fout=fopen("cuburi2.out","w");
#define nm 250005
#define ceva 30000000
#define ll long long
int n,m,h[nm],turn,st,dr;
ll sum[nm],c[nm],d[nm],nll=0,ans;
ll rs(ll s,ll r)
{
return sum[r]-sum[s-1];
}
ll f(int k)
{
ll ansc;
ansc=c[k-1]-rs(1,st-1)*(k-st)-c[st-1];
ansc+=d[k+1]-rs(dr+1,n)*(dr-k)-d[dr+1];
return ansc;
}
ll ts(int left,int right)
{
int j,leftThird,rightThird;
ll ansc,ansr=nll;
if(right-left<=2)
{
for(j=left;j<=right;j++)
{
ansc=c[j-1]-rs(1,st-1)*(j-st)-c[st-1];
ansc+=d[j+1]-rs(dr+1,n)*(dr-j)-d[dr+1];
if(ansc<ansr)
{
ansr=ansc;
turn=j;
}
}
return ansr;
}
else
{
leftThird = (left*2+right)/3;
rightThird = (left+right*2)/3;
if(f(leftThird)>f(rightThird)) return ts(leftThird,right);
else return ts(left,rightThird);
}
}
int main()
{
int i,j;
ll ansc;
long nl=2000000000;
for(i=1;i<=20000;i++)
nll+=nl;
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=n;i++)
fscanf(fin,"%d",&h[i]);
sum[0]=0;
for(i=1;i<=n;i++)
sum[i]=sum[i-1]+h[i];
c[0]=0;
for(i=1;i<n;i++)
c[i]=c[i-1]+sum[i];
d[n+1]=0;
for(i=n;i>1;i--)
d[i]=d[i+1]+sum[n]-sum[i-1];
if((ll)n*m<=ceva)
{
for(i=1;i<=m;i++)
{
fscanf(fin,"%d%d",&st,&dr);
ans=nll;
for(j=st;j<=dr;j++)
{
ansc=c[j-1]-rs(1,st-1)*(j-st)-c[st-1];
ansc+=d[j+1]-rs(dr+1,n)*(dr-j)-d[dr+1];
if(ansc<ans)
{
ans=ansc;
turn=j;
}
}
fprintf(fout,"%d %lld\n",turn,ans);
}
}
else
{
for(i=1;i<=m;i++)
{
fscanf(fin,"%d%d",&st,&dr);
ans=ts(st,dr);
fprintf(fout,"%d %lld\n",turn,ans);
}
}
fclose(fin);
fclose(fout);
return 0;
}