#include <iostream>

using namespace std;

typedef struct{
    int maxi;
    int mini;
}Matrica;

int main()
{
    int n, m, br=0, brm=0;
    cin >> n >> m;
    Matrica r[100], k[100];
    for(int i=0; i<n; i++){
        cin >> r[i].mini >> r[i].maxi;
    }
    for(int j=0; j<m; j++){
        cin >> k[j].mini >> k[j].maxi;
    }
    int mat[100][100];

        for(int i=0; i<n; i++){
            for(int j=0; j<m; j++){
                mat[i][j]=0;
                if(r[i].maxi>0 && k[j].maxi>0){
                    if(k[j].maxi>=r[i].maxi){
                        mat[i][j]+=r[i].maxi;
                        k[j].maxi-=r[i].maxi;
                        br+=r[i].maxi;
                        r[i].maxi=0;
                    }
                    else{
                        mat[i][j]+=k[j].maxi;
                        r[i].maxi-=k[j].maxi;
                        br+=k[j].maxi;
                        k[j].maxi=0;
                    }
                }
                if(mat[i][j]==0){
                    brm++;
                }
            }
        }
        cout << br << endl;
        cout << m*n-brm << endl;
        for(int i=0; i<n; i++){
            for(int j=0; j<m; j++){
                if(mat[i][j]!=0){
                    cout << i+1 << " " << j+1 << " " << mat[i][j] << endl;
                }
            }
        }
        return 0;
}