#include <bits/stdc++.h>

using namespace std;

struct interv{
    int Min,Max;
};

int main()
{
    int n,m;
    cin>>n>>m;
    int kert[n][m];
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            kert[i][j]=0;
    interv sorok[n],oszlopok[m];
    for(int i=0;i<n;i++)
        cin>>sorok[i].Min>>sorok[i].Max;
    for(int i=0;i<m;i++)
        cin>>oszlopok[i].Min>>oszlopok[i].Max;
    int ossz=0,k=0;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            if(oszlopok[j].Max!=0&&sorok[i].Max!=0)
            {
                int seged1=min(sorok[i].Min, oszlopok[j].Min);
                kert[i][j]=seged1;
                oszlopok[j].Max-=seged1;
                sorok[i].Max-=seged1;
            }
            if(oszlopok[j].Max!=0&&sorok[i].Max!=0)
            {
                int seged2=min(sorok[i].Max, oszlopok[j].Max);
                kert[i][j]+=seged2;
                oszlopok[j].Max-=seged2;
                sorok[i].Max-=seged2;
            }
            if(kert[i][j]!=0)
            {
                k++;
                ossz+=kert[i][j];
            }
        }
    }

    cout<<ossz<<endl;
    cout<<k<<endl;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            if(kert[i][j]!=0)
                cout<<i+1<<" "<<j+1<<" "<<kert[i][j]<<endl;
        }
    }
    return 0;
}