#include<bits/stdc++.h>
using namespace std;
#define N 50005
#define B 225
int F1[N/B+5][N],F2[N/B+5][N];
int n,m;
int a[N],sum[N],temp[N];
int cnt1=1;
void precalc()
{
for(int i=0;i<=N/B;i++){
int l=i*B;
if(l>n)
break;
for(int r=l;r<=n;r++)
temp[sum[r]]=-1;
int tmp=0;
for(int r=l;r<=n;r++){
if(temp[sum[r]]==-1){
temp[sum[r]]=r;
}
else
tmp=max(tmp,r-temp[sum[r]]);
F1[i][r]=tmp;
//printf("%d %d = %d\n",i,r,tmp);
}
}
for(int i=0;i<=N/B;i++){
int r=i*B;
if(r>n)
break;
int tmp=0;
for(int l=0;l<r;l++){
temp[sum[l]]=-1;
}
for(int l=r-1;l>=0;l--){
if(temp[sum[l]]==-1)
temp[sum[l]]=l;
else
tmp=max(tmp,temp[sum[l]]-l);
F2[i][l]=tmp;
//printf("%d %d = %d\n",i,l,tmp);
}
}
}
int solve(int l,int r)
{
int ll=(l+B-1)/B;
int rr=r/B;
int ans=0;
if(ll+1<rr){
ans=max(ans,max(F1[ll][r],F2[rr][l-1]));
for(int i=l-1;i<=ll*B;i++)
temp[sum[i]]=-1;
for(int i=r;i>=rr*B-1;i--)
temp[sum[i]]=-1;
for(int i=l-1;i<=ll*B;i++){
if(temp[sum[i]]==-1){
temp[sum[i]]=i;
}
}
int tmp=0;
for(int i=r;i>=rr*B-1;i--){
if(temp[sum[i]]!=-1){
tmp=max(tmp,i-temp[sum[i]]);
// printf("i = %d temp[sum[]] = %d\n",i,temp[sum[i]]);
}
}
// printf("here %d %d\n",ll*B,rr*B);
//printf("tmp = %d\n",tmp);
ans=max(tmp,ans);
}
else
{
for(int i=l-1;i<=r;i++)
temp[sum[i]]=-1;
int tmp=0;
for(int i=l-1;i<=r;i++){
if(temp[sum[i]]==-1)
temp[sum[i]]=i;
else
tmp=max(tmp,i-temp[sum[i]]);
}
ans=tmp;
}
return ans;
}
int main()
{
//freopen("input.txt","r",stdin);
//freopen("output1.txt","w",stdout);
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
sum[i]=sum[i-1]+a[i];
}
precalc();
memset(temp,-1,sizeof(temp));
while(m--){
int l,r;
scanf("%d %d",&l,&r);
if(l>r)
swap(l,r);
int ans=solve(l,r);
printf("%d\n",ans);
cnt1++;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBOIDUwMDA1CiNkZWZpbmUgQiAyMjUKaW50IEYxW04vQis1XVtOXSxGMltOL0IrNV1bTl07CmludCBuLG07CmludCBhW05dLHN1bVtOXSx0ZW1wW05dOwppbnQgY250MT0xOwp2b2lkIHByZWNhbGMoKQp7CiAgICBmb3IoaW50IGk9MDtpPD1OL0I7aSsrKXsKICAgICAgICBpbnQgbD1pKkI7CiAgICAgICAgaWYobD5uKQogICAgICAgICAgICBicmVhazsKICAgICAgICBmb3IoaW50IHI9bDtyPD1uO3IrKykKICAgICAgICAgICAgdGVtcFtzdW1bcl1dPS0xOwoKICAgICAgICBpbnQgdG1wPTA7CgogICAgICAgIGZvcihpbnQgcj1sO3I8PW47cisrKXsKICAgICAgICAgICAgaWYodGVtcFtzdW1bcl1dPT0tMSl7CiAgICAgICAgICAgICAgICB0ZW1wW3N1bVtyXV09cjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB0bXA9bWF4KHRtcCxyLXRlbXBbc3VtW3JdXSk7CiAgICAgICAgICAgIEYxW2ldW3JdPXRtcDsKICAgICAgICAgICAgLy9wcmludGYoIiVkICVkID0gJWRcbiIsaSxyLHRtcCk7CiAgICAgICAgfQogICAgfQogICAgZm9yKGludCBpPTA7aTw9Ti9CO2krKyl7CiAgICAgICAgaW50IHI9aSpCOwogICAgICAgIGlmKHI+bikKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgaW50IHRtcD0wOwogICAgICAgIGZvcihpbnQgbD0wO2w8cjtsKyspewogICAgICAgICAgICB0ZW1wW3N1bVtsXV09LTE7CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgbD1yLTE7bD49MDtsLS0pewogICAgICAgICAgICBpZih0ZW1wW3N1bVtsXV09PS0xKQogICAgICAgICAgICAgICAgdGVtcFtzdW1bbF1dPWw7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHRtcD1tYXgodG1wLHRlbXBbc3VtW2xdXS1sKTsKICAgICAgICAgICAgRjJbaV1bbF09dG1wOwogICAgICAgICAgICAvL3ByaW50ZigiJWQgJWQgPSAlZFxuIixpLGwsdG1wKTsKICAgICAgICB9CiAgICB9Cn0KaW50IHNvbHZlKGludCBsLGludCByKQp7CiAgICBpbnQgbGw9KGwrQi0xKS9COwogICAgaW50IHJyPXIvQjsKICAgIGludCBhbnM9MDsKICAgIGlmKGxsKzE8cnIpewogICAgCiAgICBhbnM9bWF4KGFucyxtYXgoRjFbbGxdW3JdLEYyW3JyXVtsLTFdKSk7CiAgICBmb3IoaW50IGk9bC0xO2k8PWxsKkI7aSsrKQogICAgICAgIHRlbXBbc3VtW2ldXT0tMTsKICAgIGZvcihpbnQgaT1yO2k+PXJyKkItMTtpLS0pCiAgICAgICAgdGVtcFtzdW1baV1dPS0xOwogICAgZm9yKGludCBpPWwtMTtpPD1sbCpCO2krKyl7CiAgICAgICAgaWYodGVtcFtzdW1baV1dPT0tMSl7CiAgICAgICAgICAgIHRlbXBbc3VtW2ldXT1pOwogICAgICAgIH0KICAgIH0KICAgIGludCB0bXA9MDsKICAgIGZvcihpbnQgaT1yO2k+PXJyKkItMTtpLS0pewogICAgICAgIGlmKHRlbXBbc3VtW2ldXSE9LTEpewogICAgICAgIHRtcD1tYXgodG1wLGktdGVtcFtzdW1baV1dKTsKICAgICAgIC8vIHByaW50ZigiaSA9ICVkIHRlbXBbc3VtW11dID0gJWRcbiIsaSx0ZW1wW3N1bVtpXV0pOwogICAgICAgIH0KICAgIH0KICAgIC8vIHByaW50ZigiaGVyZSAlZCAlZFxuIixsbCpCLHJyKkIpOwogICAgLy9wcmludGYoInRtcCA9ICVkXG4iLHRtcCk7CiAgICBhbnM9bWF4KHRtcCxhbnMpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGZvcihpbnQgaT1sLTE7aTw9cjtpKyspCiAgICAgICAgICAgIHRlbXBbc3VtW2ldXT0tMTsKICAgICAgICBpbnQgdG1wPTA7CiAgICAgICAgZm9yKGludCBpPWwtMTtpPD1yO2krKyl7CiAgICAgICAgICAgIGlmKHRlbXBbc3VtW2ldXT09LTEpCiAgICAgICAgICAgICAgICB0ZW1wW3N1bVtpXV09aTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgdG1wPW1heCh0bXAsaS10ZW1wW3N1bVtpXV0pOwogICAgICAgIH0KICAgICAgICBhbnM9dG1wOwogICAgfQogICAgcmV0dXJuIGFuczsKfQppbnQgbWFpbigpCnsKICAgIC8vZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwogICAgLy9mcmVvcGVuKCJvdXRwdXQxLnR4dCIsInciLHN0ZG91dCk7CiAgICBzY2FuZigiJWQgJWQiLCZuLCZtKTsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKXsKICAgICAgICBzY2FuZigiJWQiLCZhW2ldKTsKICAgICAgICBzdW1baV09c3VtW2ktMV0rYVtpXTsKICAgIH0KICAgIHByZWNhbGMoKTsKICAgIG1lbXNldCh0ZW1wLC0xLHNpemVvZih0ZW1wKSk7CiAgICB3aGlsZShtLS0pewogICAgICAgIGludCBsLHI7CiAgICAgICAgc2NhbmYoIiVkICVkIiwmbCwmcik7CiAgICAgICAgaWYobD5yKQogICAgICAgICAgICBzd2FwKGwscik7CiAgICAgICAgaW50IGFucz1zb2x2ZShsLHIpOwogICAgICAgIHByaW50ZigiJWRcbiIsYW5zKTsKICAgICAgICAgY250MSsrOwogICAgfQp9Cgo=