#include <iostream>
#include <vector>
#include <set>
#include <map>


using namespace std;


int a[1000000];
int b[1000000];
int sumal[1000000];
int sumar[1000000];
int tree[300000];


void update(int k1, int k2, int n)
{
    while(k1<=n)
    {
        tree[k1]+=1;
        k1+=k1&-k1;
    }
    while(k2<=n)
    {
        tree[k2]-=1;
        k2+=k2&-k2;
    }
}


int getsum(int k)
{
    int s=0;
    while(k>=1)
    {
        s+=tree[k];
        k-=k&-k;
    }
    return s;
}


vector <pair <int, int>> potrebnol[100000];
vector <pair <int, int>> potrebnor[1000000];



int main()
{
    int n, m;
    cin>>n>>m;
    set <int> s;
    for(int i=1; i<=n; i++)
    {
        cin>>a[i]>>b[i];
        s.insert(a[i]);
        s.insert(b[i]+1);
    }
    int l, r, x;
    for(int i=0; i<m; i++)
    {
        cin>>l>>r>>x;
        potrebnol[l-1].push_back({x, i});
        potrebnor[r].push_back({x, i});
        s.insert(x);

    }
    set <int> :: iterator it;
    it=s.begin();
    map<int, int> mapurda;
    for(int i=1; i<=s.size(); i++)
    {
        mapurda[*it]=i;
        it++;
    }
    for(int i=1; i<=n; i++)
    {
        update(mapurda[a[i]], mapurda[b[i]+1], s.size());
        for(int j=0; j<potrebnol[i].size(); j++)
        {
            sumal[potrebnol[i][j].second]=getsum(mapurda[potrebnol[i][j].first]);

        }
        for(int j=0; j<potrebnor[i].size(); j++)
        {
            sumar[potrebnor[i][j].second]=getsum(mapurda[potrebnor[i][j].first]);

        }
    }
    for(int i=0; i<m; i++)
    {
        cout<<sumar[i]-sumal[i]<<endl;
    }

}