#include<bits/stdc++.h>
using namespace std;
unsigned long long a[100005],b[100005],c[100005],d[100005],l[100005],r[100005];
unsigned long long n,q;
string e = "";
void jz10_2(unsigned long long w){
if(w==1){
e += '1';
return;
}
jz10_2(w/2);
char r = w%2+'0';
e+=r;
}
string yihuo(string w,string u){
char s1[100000],s2[100000],s3[100000];
for(int i = 0;i<w.length();i++){
s1[w.length()-i] = w[i];
}
for(int i = 0;i<u.length();i++){
s2[u.length()-i] = u[i];
}
for(int i = max(w.length(),u.length());i>=1;i--){
if(s1[i]==s2[i]){
if(i>w.length()){
s3[i] = s2[i];
}
else if(i>u.length()){
s3[i] = s1[i];
}
else{
s3[i] = '0';
}
}
else{
if(i>w.length()){
s3[i] = s2[i];
}
else if(i>u.length()){
s3[i] = s1[i];
}
else{
s3[i] = '1';
}
}
}
string o = "";
for(int i = max(w.length(),u.length());i>=1;i--){
o+=s3[i];
}
return o;
}
unsigned long long jz2_10(string t){
unsigned long long sum=0;
for(int i = 0;i<t.length();i++){
sum += pow(2,i)*(t[i]-'0');
}
return sum;
}
int main(){
cin>>n>>q;
for(unsigned long long i = 1;i<=n;i++){
cin>>a[i]>>b[i];
}
for(unsigned long long i = 1;i<=q;i++){
cin>>l[i]>>r[i]>>c[i]>>d[i];
}
for(unsigned long long i = 1;i<=q;i++){
unsigned long long number=0;
for(unsigned long long j = l[i];j<=r[i];j++){
e = "";
jz10_2(a[j]);
string tired1,tired2;
tired1 = e;
e = "";
jz10_2(c[i]);
tired2 = e;
if(jz2_10(yihuo(tired1,tired2))<=min(b[j],d[i])){
number++;
}
}
cout<<number<<endl;
}
}