#include <cstdio>
#include <cstdlib>
#include <ctime>
using namespace std;
const int maxN = 250001;
const long long oo = 1LL << 60;
long long Sum[maxN], Sum2[maxN], InvSum[maxN], InvSum2[maxN];
int V[maxN], N, M;
inline long long min(long long a, long long b){
if (a < b)
return a;
return b;
}
long long SumaStg(int x, int y){
return (Sum2[y] - Sum2[x - 1]) - 1LL * (y - x + 1) * Sum[x - 1];
}
long long SumaDr(int x, int y){
return (InvSum2[x] - InvSum2[y + 1]) - 1LL * (y - x + 1) * InvSum[y + 1];
}
inline long long SumaPe(int a, int b, int i){
int nr;
long long st, dr;
if (i == a)
return SumaDr(a + 1, b);
if (i == b)
return SumaStg(a, b - 1);
st = SumaStg(a, i - 1);
dr = SumaDr(i + 1, b);
//printf("(%d %d %d %lld %lld)\n",a, b, i, st, dr);
return st + dr;
}
void baga_brut(int a, int b){
int i, nr, poz;
long long st, dr, minim = oo, x;
nr = b - a;
for (i = a ; i <= b; ++i){
x = SumaPe(a, b, i);
if (x < minim){
minim = x;
poz = i;
}
}
printf("%d %lld\n", poz ,minim);
}
void baga_marfa(int a, int b){
}
int main(){
int i, a, b;
freopen("cuburi2.in", "r", stdin);
freopen("cuburi2.out", "w", stdout);
scanf("%d%d", &N, &M);
for (i = 1; i <= N; ++i){
scanf("%d", &V[i]);
Sum[i] = Sum[i - 1] + V[i];
Sum2[i] = Sum2[i - 1] + Sum[i];
}
for (i = N; i; --i){
InvSum[i] = InvSum[i + 1] + V[i];
InvSum2[i] = InvSum2[i + 1] + InvSum[i];
}
while (M --){
scanf("%d%d", &a, &b);
if (M <= 5000)
baga_brut(a, b);
else
baga_marfa(a, b);
}
/*for (i = 1; i <= N; ++i)
printf("%d ", InvSum[i]);
puts("");
for (i = 1; i <= N; ++i)
printf("%d ", InvSum2[i]);
puts("");*/
//fprintf(stderr, "%lld %lld ", SumaStg(1,2), SumaDr(4,5));
}