#include<bits/stdc++.h>
#define ll long long
#define MAXN 200007
using namespace std;
vector<pair<ll,ll>>v;
int n,n1;
struct pts
{
    vector<ll>start;
    vector<ll>end;
};
vector<pts>MST(4*MAXN+7);
void Merge(int p, int l, int r)
{
    MST[p].start.resize(MST[l].start.size()+MST[r].end.size());
    MST[p].end.resize(MST[l].end.size()+MST[r].end.size());
    merge(MST[l].start.begin(),MST[l].start.end(),
          MST[r].start.begin(),MST[r].start.end(),
          MST[p].start.begin());
    merge(MST[l].end.begin(),MST[l].end.end(),
          MST[r].end.begin(),MST[r].end.end(),
          MST[p].end.begin());
}
void MakeMST()
{
    for(int i=n1;i<2*n1;i++)
    {
        if(i<n1+n)
        {
            MST[i].start={v[i-n1].first};
            MST[i].end={v[i-n1].second};
        }
        else 
        {
            MST[i].start={};
            MST[i].end={};
        }
    }
    for(int i=n1-1;i>0;i--)
    {
        Merge(i,2*i,2*i+1);
    }
}
int get(vector<ll>&s, vector<ll>&e, ll x)
{
    int a=upper_bound(s.begin(),s.end(),x)-s.begin();
    int b=lower_bound(e.begin(),e.end(),x)-e.begin();
    return a-b;
}
int solve(int l, int r, ll x)
{
    l+=n1-1;
    r+=n1-1;
    int res=0;
    while(l<=r)
    {
        if(l%2==1)
        {
            res+=get(MST[l].start,MST[l].end,x);
            l++;
        }
        if(r%2==0)
        {
            res+=get(MST[r].start,MST[r].end,x);
            r--;
        }
        l/=2;
        r/=2;
    }
    return res;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int m;
    cin>>n>>m;
    for(int i=0;i<n;i++)
    {
        int d,u;
        cin>>d>>u;
        v.push_back({d,u});
    }
    n1=n;
    if(log2(n1)!=(int)(log2(n1)))n1=1<<((int)log2(n1)+1);
    MakeMST();
    ll l,r,x;
    while(m--)
    {
        cin>>l>>r>>x;
        cout<<solve(l,r,x)<<'\n';
    }
}