#include <bits/stdc++.h>
#define mp make_pair
#define F first
#define S second
using namespace std;
#define int long long
map<pair<int, int>, int> mapa;
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n, m;
    cin >> n >> m;
    int ans=0;
    pair<int, int> r[n];
    pair<int, int> c[m];
    for(int i=0; i< n; i++){
        int L ,R;
        cin >> L >> R;
        r[i]=mp(L, R);
    }
    for(int i=0; i< m; i++){
        int L, R;
        cin >> L >> R;
        c[i]=mp(L, R);
    }
    int x=0; int y=0;
    while(x<n && y<m){
        int popuni=0;
        if(r[x].F<=c[y].S && c[y].F<=r[x].S){
            popuni=min(r[x].F, c[y].F);
            r[x].S-=popuni;
            c[y].S-=popuni;
            r[x].F-=popuni;
            c[y].F-=popuni;
            mapa[mp(x, y)]+=popuni;
            if(r[x].F==0 && c[y].F==0){
                x++; y++;
            }
            else if(r[x].F==0)x++;
            else y++;
        }
        else if(r[x].F>=c[y].S){
            popuni=c[y].F;
            c[y].S-=popuni;
            c[y].F=0;
            r[x].F-=popuni;
            r[x].S-=popuni;
            mapa[mp(x,y)]+=popuni;
            y++;
        }
        else if(c[y].F>=r[x].S){
            popuni=r[x].F;
            c[y].S-=popuni;
            c[y].F-=popuni;
            r[x].F=0;
            r[x].S-=popuni;
            mapa[mp(x,y)]+=popuni;
            x++;
        }
        ans+=popuni;
    }




    x=0; y=0;
    while(x<n && y<m){
        if(r[x].S==0 && c[y].S==0){
            x++;
            y++;
        }
        else if(r[x].S==0){
            x++;
        }
        else if(c[y].S==0){
            y++;
        }
        else{
            int popuni=min(r[x].S, c[y].S);
            r[x].S-=popuni;
            c[y].S-=popuni;
            mapa[mp(x,y)]+=popuni;
            if(r[x].S==0 && c[y].S==0){
                x++;
                y++;
            }
            else if(r[x].S==0){
                x++;
            }
            else if(c[y].S==0){
                y++;
            }
            ans+=popuni;
        }
    }

    int cnt=0;
    for(auto p: mapa){
        if(p.S!=0)cnt++;
    }
    cout << ans << '\n' << cnt << '\n';
    for(auto p: mapa){
        if(p.S!=0){
            cout << p.F.F+1 << " " << p.F.S+1 << " " << p.S << '\n';
        }
    }
}