#include <iostream>
//#include <vector>

using namespace std;
 /*class tri{
public:
int  x,y,n;
tri(){
x=0;
y=0;
n = 0;
}
tri(int x,int y,int n){
this -> x = x;
this -> y = y;
this -> n = n;
}
};
*/
int main()
{
    cin.tie(0);
    int n;
    int m;
    cin>>n;
    cin>>m;
    //int brojacR[n];
   // int brojacK[m];
    int krompir = 0;
    int polja = 0;
    int a[n];
    int b[n];
    int c[m];
    int d[m];
    int matrica[n][m];

   // int mini=0;
   // int minj=0;
   // vector <tri> prvi;
    for(int i=0; i<n; i++){
        cin>>a[i]>>b[i];
       // brojacR[i]=0;
        //mini+=b[i];
    }
    for(int i=0; i<m; i++){
        cin>>c[i]>>d[i];
      //  brojacK[i] =0;
      //  minj+=d[i];
    }
    //mini = min(mini,minj);
   // while(krompir!=mini)
    for(int i=0; i<n; i++){
        for(int j= 0; j<m; j++){
            matrica[i][j]=c[j];
               // prvi.push_back(tri(i,j,c[j]));
                krompir+=c[j];
        }
    }
for(int i=0; i<n; i++){
    for(int j=0; j<m; j++){
        if(krompir + d[j] - matrica[i][j]<=b[i]){
            matrica[i][j]+=d[j] - matrica[i][j];
            krompir+=d[j] - matrica[i][j];
        }
        else{
            matrica[i][j] += b[i]-krompir;
            krompir = b[i];
        }
        if(matrica[i][j]!=0){
            polja++;
        }
    }
}
    cout<<krompir<<endl;
    cout<<polja<<endl;
    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            if(matrica[i][j]!=0){
                cout<<i+1<<" "<<j+1<<" "<<matrica[i][j]<<endl;
            }
        }
    }

    return 0;
}