#include <bits/stdc++.h>
using namespace std;
void pairsort(int a[], int b[], int n)
{
    pair<int, int> pairt[n];

    // Storing the respective array
    // elements in pairs.
    for (int i = 0; i < n; i++)
    {
        pairt[i].first = a[i];
        pairt[i].second = b[i];
    }

    // Sorting the pair array.
    sort(pairt, pairt + n);

    // Modifying original arrays
    for (int i = 0; i < n; i++)
    {
        a[i] = pairt[i].first;
        b[i] = pairt[i].second;
    }
}

int n,m,d[200000],u[200000],l[200000],r[200000],x[200000],odgovori[200000],tezine[200000],indeksi[200000];
int main(){
    cin >> n >> m;
    for(int i=0;i<n;i++){
        cin >> d[i] >> u[i];
    }
    for(int i=0;i<m;i++){
        cin >> l[i] >> r[i] >> x[i];
    }
    int rez;
    if(n<=1000 && m<=1000){
        for(int i=0;i<m;i++){
            rez=0;
            for(int j=l[i]-1;j<r[i];j++){
                if(d[j]<=x[i] && u[j]>=x[i]){
                    rez++;
                }
            }
            cout << rez << endl;
        }
        return 0;
    }
    bool jednaki=true;
    for(int i=0;i<n;i++){
        if(d[i]!=u[i]){
            jednaki=false;
            break;
        }
    }
    if(jednaki){
        for(int i=0;i<n;i++){
            tezine[i]=d[i];
            indeksi[i]=i+1;
        }
        pairsort(tezine,indeksi,n);
        int veci,masa;
        for(int t=0;t<m;t++){
            rez=0;
            veci=upper_bound(tezine, tezine+n, x[t]) - tezine;
            veci=veci-1;
            masa=tezine[veci];
            for(int i=veci;i>-1;i--){
                if(tezine[veci]==masa && indeksi[veci]>=l[t] && indeksi[veci]<=r[t]){
                    rez++;
                }
                if(tezine[veci]!=masa){
                    break;
                }
            }
            cout << rez << endl;
        }
    }
}