#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
const int N=1e5+1;
struct node{
long long m,v;
}a[N];
long long f[N],s,d;
long long n,b;
bool cmp(node a,node b) {
return a.v<b.v;
}
bool cmp2(node a,node b) {
return a.m<b.m;
}
int check(long long end,long long h) {
for(long long i=1; i<end; i++) {
if(a[i+1].m-a[i].m>h)
return 0;
}
return 1;
}
int main() {
scanf("%lld%lld",&n,&b);
long long maxf=0;
for(long long i=1; i<=n; i++) {
scanf("%lld",&f[i]);
a[i].m=i;
a[i].v=f[i];
maxf=max(maxf,f[i]);
}
sort(a+1,a+n+1,cmp);
for(long long i=1; i<=b; i++) {
scanf("%lld%lld",&s,&d);
long long l=1,r=n,k;
if(s>maxf) {
cout<<1<<endl;
continue;
}
while(l<r) {
long long mid=l+r>>1;
if((a[mid].v==s)||(a[mid].v<s&&a[mid+1].v>s)) {
k=mid;
break;
}else if(a[mid].v>s) {
r=mid;
}else if(a[mid].v<s) {
l=mid;
}
}
sort(a+1,a+k+1,cmp2);
cout<<check(k,d)<<endl;
}
return 0;
}