#include <bits/stdc++.h>

using namespace std;

map<int,vector<int>>mp;
pair<pair<int,int>,int> vage[200001], kopija[200001];

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n, m; cin >> n >> m;
    for(int i=1;i<=n;i++){
        cin >> vage[i].first.first >> vage[i].first.second;
        vage[i].second=i;
        kopija[i]=vage[i];
    }
    sort(kopija, kopija+n+1);
    bool uzast = true;
    int last = 0;
    for(int i=1;i<=n;i++){
        if(kopija[i].first.first < last){
            uzast=false;
            break;
        }
        last = kopija[i].first.second;
    }
    if(uzast){
        for(int i=0;i<m;i++){
            int l, r, v; cin >> l >> r >> v;
            int lo = 0, hi = n-1;
            int ans=n;
            for(;lo<=hi;){
                int mid = (lo+hi)/2;
                if(kopija[mid].first.first<=v){
                    ans = mid;
                    lo=mid+1;
                }
                else{
                    hi=mid-1;
                }
            }
            if(ans==n)cout << 0 << '\n';
            else if(kopija[ans].first.second>=v && l<=kopija[ans].second && kopija[ans].second <=r){
                cout << 1 <<'\n';
            }
            else cout << 0 << '\n';
        }
        return 0;
    }
    if(n*m<=5000000){
        for(int i=0;i<m;i++){
            int l, r, v; cin >> l >> r >> v;
            int ans = 0;
            for(int j=l;j<=r;j++){
                if(vage[j].first.first<=v && v<=vage[j].first.second)ans++;
            }
            cout << ans << '\n';
        }
        return 0;
    }
    for(int i=0;i<n;i++){
        mp[vage[i].first.first].push_back(i);
    }
    for(int i=0;i<m;i++){
        int l, r, v; cin >> l >> r >> v;
        auto vct = mp[v];
        int low = lower_bound(vct.begin(), vct.end(), l) - vct.begin();
        int upp = upper_bound(vct.begin(), vct.end(), r) - vct.begin();
        cout << upp - low << '\n';
    }
    return 0;
}