/******************************************************************************
Online C Compiler.
Code, Compile, Run and Debug C program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
int find_pos(int x, int y, long long *sp)
{
long long total = sp[y] - sp[x - 1];
long long need = (total + 1) / 2;
int st = x, dr = y, ans = y;
while (st <= dr)
{
int mid = (dr + st) / 2;
if (sp[mid] - sp[x - 1] >= need)
{
ans = mid;
dr = mid - 1;
}
else
st = mid + 1;
}
return ans;
}
int main(void)
{
FILE *fin = fopen("cuburi2.in", "r");
FILE *fout = fopen("cuburi2.out", "w");
int n, m;
fscanf(fin, "%d %d", &n, &m);
long long *sp = (long long*)calloc(n + 1, sizeof(long long));
long long *ssp = (long long*)calloc(n + 1, sizeof(long long));
for (int i = 1; i <= n; i++)
{
int val;
fscanf(fin, "%d", &val);
sp[i] = sp[i - 1] + val;
ssp[i] = ssp[i - 1] + (long long)i * val;
}
for (int i = 1; i <= m; i++)
{
int x, y;
if (fscanf(fin, "%d %d", &x, &y) != 2) break;
int p = find_pos(x, y, sp);
long long s1 = 0, s2 = 0;
long long suma_inaltimi_st = sp[p - 1] - sp[x - 1];
long long suma_ponderata_st = ssp[p - 1] - ssp[x - 1];
if (x < p) {
s1 = (long long)p * suma_inaltimi_st - suma_ponderata_st;
}
long long suma_inaltimi_dr = sp[y] - sp[p];
long long suma_ponderata_dr = ssp[y] - ssp[p];
if (p < y) {
s2 = suma_ponderata_dr - (long long)p * suma_inaltimi_dr;
}
fprintf(fout, "%d %lld\n", p, s1 + s2);
}
fclose(fin);
fclose(fout);
free(sp);
free(ssp);
return 0;
}