#include<bits/stdc++.h>

using namespace std;

struct tacka {
    int d, u;
};
struct tacka1 {
    int d;
    vector<int> a;
};

int main() {
    int n, m;
    bool prvi(0), drugi(1);
    cin >> n >> m; 
    if(n <= 1000 && m <= 1000)
        prvi = 1;
    tacka du[n];
    for(int i = 0; i < n; i++) {
        cin >> du[i].d >> du[i].u;
        if(du[i].d != du[i].u)
            drugi = 0;
    }
    tacka lm[m];
    int x[m];
    for(int i = 0; i < m; i++) {
        cin >> lm[i].d >> lm[i].u >> x[i];
        lm[i].d--;
        lm[i].u--;
    }
    if(prvi){
        for(int i = 0; i < m; i++){
            int ans(0);
            for(int j = lm[i].d;  j <= lm[i].u; j++) {
                if(x[i] >= du[j].d && x[i] <= du[j].u)
                    ans++;
            }
            cout << ans << '\n';
        }
    }
    else if(drugi){
        map<int, vector<int> >p;
        set<int> s;
        for(int i = 0; i < n; i++) {
            s.insert(du[i].d);
        }
        vector<int> a;
        for(auto itr = s.begin(); itr != s.end(); itr++) {
            p.insert({*itr, a});
        }
        for(int i = 0; i < n; i++) {
            p[du[i].d].push_back(i);
        }
        for(int i = 0; i < m; i++) {
            int levo, desno, ans(0);
            levo = lower_bound(p[x[i]].begin(), p[x[i]].end(), lm[i].d) - p[x[i]].begin();
            desno = lower_bound(p[x[i]].begin(), p[x[i]].end(), lm[i].u) - p[x[i]].begin();
            if(p[x[i]][desno] == lm[i].u)
                ans += desno - levo + 1;
            else if(desno = p[x[i]].size())
                ans += desno - levo;
            else
                ans += desno - levo;
                cout << ans << '\n';
        }
    }
 




    return 0;
}