#include <bits/stdc++.h>

using namespace std;
#define int long long
int a[50001];
int b[50001];
int c[50001];
int d[50001];
int toadd[50001];


int32_t main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n, m; cin >> n >> m;

    for(int i=0;i<n;i++){
        cin >> a[i] >> b[i];
    }
    for(int i=0;i<m;i++){
        cin >> c[i] >> d[i];
    }
    if(n==1){
        for(int i=0;i<m;i++){
            cout << d[i] << ' ';
        }
        return 0;
    }
    int curri =0, currj=0;
    int tot = min(accumulate(b,b+n,0LL),accumulate(d,d+m,0LL));
    cout << tot << '\n';
    vector<pair<pair<int,int>,int>>ans;
    int i=0, j=0;
    // popuni min
    int lasti=0;
    for(;i<n &&j < m;){
        if(b[i]>=c[j]){
            if(c[j])ans.push_back({{i,j},c[j]});
            b[i]-=c[j];
            d[j]-=c[j];
            j++;
            if(b[i]==0)i++;
        }
        else{
            if(b[i])ans.push_back({{i,j},b[i]});
            c[j]-=b[i];
            d[j]-=b[i];
            i++;
            lasti++;
        }
    }
    j=0;
    for(;i<n;){
        if(b[i]>=d[j]){
            if(d[j])ans.push_back({{i,j},d[j]});
            if(i==lasti){
                toadd[j]+=d[j];
            }
            b[i]-=d[j];
            j++;
            j%=m;
            if(b[i]==0)i++;
        }
        else{
            if(b[i])ans.push_back({{i,j},b[i]});
            if(i==lasti){
                toadd[j]+=b[i];
            }
            d[j]-=b[i];
            i++;
        }
    }

    int asz = ans.size()*1LL;
    for(auto aa:ans){
        if(aa.first.first==lasti && toadd[aa.first.second]>0){
        asz--;
            toadd[aa.first.second]*=-1;}
        else if(aa.first.first==lasti && toadd[aa.first.second]<0){
            toadd[aa.first.second]*=-1;
            continue;
        }

    }
    cout << asz << '\n';
    for(auto aa:ans){
        if(aa.first.first==lasti && toadd[aa.first.second]>0){
        cout << aa.first.first+1 << ' ' << aa.first.second+1 << ' ' << aa.second+toadd[aa.first.second] << '\n';
            toadd[aa.first.second]=-1;}
        else if(aa.first.first==lasti && toadd[aa.first.second]<0)continue;
        else cout << aa.first.first+1 << ' ' << aa.first.second+1 << ' ' << aa.second << '\n';

    }
    return 0;
}