#include<bits/stdc++.h>

using namespace std;

//void print(vector<vector<int> > &v){
//    for(int i = 0; i < v.size(); ++i){
//        for(int j = 0; j < v[i].size(); ++j){
//            cout << v[i][j] << ' ';
//        }
//        cout << endl;
//    }
//    cout << endl;
//}
//
//void print(map<int, pair<int, long long> > &baz){
//    for(auto i = baz.begin(); i != baz.end(); ++i){
//        cout << (*i).first << ' ' <<(*i).second.first << " " << (*i).second.second << endl;
//    }
//    cout << endl;
//}

class yy{
public:
    int y, b, c;
    yy(int y, int b, int c):
        y(y), b(b), c(c){}
};

int main(){
    ifstream fin("fisher.in");
    ofstream fout("fisher.out");
    #define cin fin
    #define cout fout
    return 0;
    int n, m, p;
    cin >> n >> m >> p;
    vector<pair<int, int> > vx(n);
    for(int i = 0; i < n; ++i){
        int x, ai;
        cin >> x >> ai;
        vx[i] = {x, ai};
    }
    vector<yy> vy;
    vy.reserve(m);
    for(int i = 0; i < m; ++i){
        int Y, b, c;
        cin >> Y >> b >> c;
        vy.push_back(yy(Y, b, c));
    }
    int ui = 0, uj = 0, r = 0, ul = 0;
    int maxans = 0, ans = 0;
    map<int, pair<int, long long> > baz;
    while(true){
        //cout << ui << ' ' << uj << ' ' << ul << endl;
       // print(baz);
        //cout << "OK";
        if(ui == n && uj == m){
            break;
        }
        if(uj == m || vx[ui].first <= vy[uj].y){
            ans -= p * (vx[ui].first - r);
            r = vx[ui].first;
            if(ul != 0){
                ul += vx[ui].second;
            }
            else{
                //cout << "OK";
                ul += vx[ui].second;
                //cout << ul;
                if(baz.size() != 0)
                {
                    //cout << "OK";
                    auto i = baz.end();
                    --i;
                    for(; true; --i){
                        //cout << 1;
                        if((*i).second.first > (*i).second.second){
                            if(ul > (*i).second.first - (*i).second.second){
                               // cout << "L";
                                ul -= (*i).second.first - (*i).second.second;
                                ans += ((*i).second.first - (*i).second.second) * (*i).first;
                                baz[(*i).first].second = baz[(*i).first].first;
                            }
                            else{
                                //cout << "Z";
                                ans += (*i).first * ul;
                                baz[(*i).first].second += ul;
                                ul = 0;
                                break;
                            }
                        }
                        if(i == baz.begin()){
                            break;
                        }
                    }
                    //cout << 3;
                }
                //cout << "z";
            }
            ++ui;
        }
        else if(ui == n || vx[ui].first > vy[uj].y){
            ans -= p * (vy[uj].y - r);
            r = vy[uj].y;
            if(baz.find(vy[uj].c) == baz.end()){
                baz[vy[uj].c] = {0, 0};
            }
            if(baz[vy[uj].c].first == baz[vy[uj].c].second){
                baz[vy[uj].c].first += vy[uj].b;
                if(ul >= baz[vy[uj].c].first - baz[vy[uj].c].second){
                    ul -= baz[vy[uj].c].first - baz[vy[uj].c].second;
                    ans += (baz[vy[uj].c].first - baz[vy[uj].c].second) * vy[uj].c;
                    baz[vy[uj].c].second = baz[vy[uj].c].first;
                }
                else{
                    baz[vy[uj].c].second += ul;
                    ans += ul * vy[uj].c;
                    ul = 0;


                auto i2 = baz.find(vy[uj].c);
                int k = vy[uj].b;
                for(auto i = baz.begin(); i != baz.end() && i != i2; ++i){
                    if((*i).second.second > k){
                        baz[(*i).first].second -= k;
                        baz[vy[uj].c].second += k;
                        ans += k * (vy[uj].c - (*i).first);
                        k = 0;
                        break;
                    }
                    else{
                        if((*i).second.second > 0){
                            ans += (*i).second.second * (vy[uj].c - (*i).first);
                            baz[vy[uj].c].second += (*i).second.second;
                            k -= (*i).second.second;
                            baz[(*i).first].second = (*i).second.first;
                        }
                    }
                }
            }
            }
            else{
                baz[vy[uj].c].first += vy[uj].b;
            }
            ++uj;
        }
//        else{
//            ans -= p * (vx[ui].first - r);
//            if(ul != 0){
//                ul += vx[ui].second;
//            }
//            else{
//                ul += vx[ui].second;
//                if(baz.size() != 0)
//                {
//                    auto i = baz.end();
//                    --i;
//                    for(; true; --i){
//                        cout << 1;
//                        if((*i).second.second > (*i).second.first){
//                            if(ul > (*i).second.second - (*i).second.first){
//                                ul -= (*i).second.second - (*i).second.first;
//                                ans += ((*i).second.second - (*i).second.first) * (*i).first;
//                                baz[(*i).first].second = baz[(*i).first].first;
//                            }
//                            else{
//                                baz[(*i).first].second += ul;
//                                ans += (*i).first * ul;
//                                ul = 0;
//                                break;
//                            }
//                        }
//                        if(i == baz.begin()){
//                            break;
//                        }
//                    }
//                }
//            }
//            if(baz.find(vy[uj].c) == baz.end()){
//                baz[vy[uj].c] = {vy[uj].b, 0};
//            }
//            if(baz[vy[uj].c].first != baz[vy[uj].c].second){
//                auto i2 = baz.find(vy[uj].c);
//                int k = vy[uj].b;
//                for(auto i = baz.begin(); i != baz.end() && i != i2; ++i){
//                    if((*i).second.second > k){
//                        baz[(*i).first].second -= k;
//                        baz[vy[uj].c].second += k;
//                        ans += k * (vy[uj].c - (*i).first);
//                        k = 0;
//                        break;
//                    }
//                    else{
//                        if((*i).second.second > 0){
//                            ans += (*i).second.second * (vy[uj].c - (*i).first);
//                            baz[vy[uj].c].second += (*i).second.second;
//                            k -= (*i).second.second;
//                            baz[(*i).first].second = (*i).second.first;
//                        }
//                    }
//                }
//            }
//            ++ui;
//            ++uj;
//        }
        //cout << "MX";
        //cout << ans << endl;
        maxans = max(maxans, ans);
    }
    cout << maxans;
    return 0;
}


/**
3 2 0
1 5
2 3
4 5
2 2 10
3 6 5


2 1 100
6 5
100 4
5 100 2000

3 3 10
1 1
10 100
20 10
2 1000 1
11 50 50
17 50 2
*/



