#include<iostream>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define ll long long
using namespace std;
const int maxn=100005,maxn1=105;
struct code{
int a,b;
}b[maxn*2];
int f[maxn1][maxn1],n,m,i,x,t,j,k,l,y,mid,a[maxn],r,p[maxn],q[maxn],xx,yy,ans[maxn*2],g[maxn];
bool cmp(code x,code y){
returnx.a<y.a;
}
int pan(intx){
if (x) returnx;returnm;
}
int main(){
// freopen("data.in","r",stdin);freopen("data.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++)
scanf("%d",&a[i]);
for (i=1;i<=m;i++)
scanf("%d%d%d%d",&b[i].a,&b[i+m].a,&p[i],&q[i]),b[i].a--,b[i].b=i,b[i+m].b=i+m;
sort(b+1,b+2*m+1,cmp);r=0;
for (i=1;i<=2*m;i++){
for (j=r+1;j<=b[i].a;j++){
g[a[j]]++;
for (k=1;k<=100;k++)
f[k][a[j]%k]++;
}r=b[i].a;
t=pan(b[i].b%m);
if (p[t]<=100) ans[b[i].b]=f[p[t]][q[t]];
else{
for (k=0;k<=(maxn-q[t])/p[t];k++){
x=k*p[t]+q[t];
ans[b[i].b]+=g[x];
}
}
}
for (i=1;i<=m;i++)
printf("%d\n",ans[i+m]-ans[i]);
}