#include <iostream>
#include <bits/stdc++.h>
/*
3 3
1 2
3 4
1 5
1 3
2 4
1 2*/
using namespace std;
vector<pair<pair<int,int>,int>> eredmeny;
void hozzaad(int x,int y,int n)
{
    //cout<<x<<" "<<y<<" "<<n<<endl;
    pair<int,int> C;
pair<pair<int,int>,int> D;
        C.first=x+1;
    C.second=y+1;
    D.first=C;
    D.second=n;
    for(int i=0;i<eredmeny.size();i++)
    {
        if(eredmeny[i].first.first==x+1&&eredmeny[i].first.second==y+1)
        {
            eredmeny[i].second+=n;
            return;
        }
    }
    //cout<<D.first.first
    eredmeny.push_back(D);
}

int main()
{
int n,m,iossz=0,jossz=0,iminossz=0,jminossz=0;
cin>>n>>m;
vector<pair<int,int>> A,B;
pair<int,int> C;
pair<pair<int,int>,int> D;
int Tomb[n+1][m+1];
for(int i=0;i<n;i++)
{
    int a,b;
    cin>>a>>b;
    C.first=a;
    C.second=b;
    iossz+=b;
    iminossz+=a;
    A.push_back(C);
}
for(int i=0;i<m;i++)
{
    int a,b;
    cin>>a>>b;
    jossz+=b;
    jminossz+=a;
    C.first=a;
    C.second=b;
    B.push_back(C);
}
cout<<min(jossz,iossz)<<endl;
int i=0,j=0;
bool elso=true,masodik=true;
int jelenlegi=min(jossz,iossz)-max(jminossz,iminossz);
if(max(jminossz,iminossz)==0)
{
    i=0;j=0;
elso=true;masodik=true;
while(jelenlegi>0)
{
        if(A[i].second>B[j].second)
        {
            if(B[j].second>=jelenlegi)
            {
                hozzaad(i,j,jelenlegi);
                break;
            }
            A[i].second-=B[j].second;
            hozzaad(i,j,B[j].second);
            jelenlegi-=B[j].second;
            j++;
        }
        else
                    if(A[i].second<B[j].second)
        {
            if(A[i].second>=jelenlegi)
            {
                hozzaad(i,j,jelenlegi);
                break;
            }
            B[j].second-=A[i].second;
            hozzaad(i,j,A[i].second);
            jelenlegi-=A[i].second;
            i++;
        }
                else
        {
            if(A[i].second>=jelenlegi)
            {
                hozzaad(i,j,jelenlegi);
                break;
            }
            hozzaad(i,j,A[i].second);
            jelenlegi-=A[i].second;
            i++;
            j++;
        }
}
}
    else{
while(elso||masodik)
{
    if(!elso)
    {
            if(A[i].second>B[j].first)
        {
            A[i].second-=B[j].first;
            B[j].second-=B[j].first;
            hozzaad(i,j,B[j].first);
            B[j].first=0;
            j++;
        }
        else
            if(A[i].second<B[j].first)
        {
            B[i].second-=A[j].second;
            B[i].first-=A[j].second;
            hozzaad(i,j,A[j].second);
            A[j].second=0;
            i++;
        }
         else
        {            hozzaad(i,j,B[j].first);
            A[i].second=0;
            B[j].second-=B[j].first;
            B[j].first=0;
            j++;
            i++;
        }

    }
    else
        if(!masodik)
    {
            if(B[j].second>A[i].first)
        {
            B[j].second-=A[i].first;
            A[i].second-=A[i].first;
            hozzaad(i,j,A[i].first);
            A[i].first=0;
            i++;
        }
        else
            if(B[j].second<A[i].first)
        {
            A[i].second-=B[j].second;
            A[i].first-=B[j].second;
            hozzaad(i,j,B[j].second);
            B[j].second=0;
            j++;
        }
         else
        {            hozzaad(i,j,A[i].first);
            B[j].second=0;
            A[i].second-=A[i].first;
            A[i].first=0;
            j++;
            i++;
        }

    }
    else{
            if(A[i].first>B[j].first)
            {
                A[i].first-=B[j].first;
                A[i].second-=B[j].first;
                B[j].second-=B[j].first;
                hozzaad(i,j,B[j].first);
                B[j].first=0;
                j++;
            }
            else
                    if(A[i].first<B[j].first)
            {
                B[i].first-=A[j].first;
                B[i].second-=A[j].first;
                A[j].second-=A[j].first;
                hozzaad(i,j,A[j].first);
                A[j].first=0;
                i++;
            }
            else
            {
                A[i].first-=B[j].first;
                A[i].second-=B[j].first;
                B[j].second-=B[j].first;
                hozzaad(i,j,B[j].first);
                B[j].first=0;
                j++;
                i++;
            }
    }
    if(j==m)
    {
        masodik=false;
        j=0;
    }
        if(i==n)
    {
        elso=false;
        i=0;
    }
}
i=0;j=0;
elso=true;masodik=true;
//cout<<jelenlegi<<endl<<endl;
while(jelenlegi>0)
{
        if(A[i].second>B[j].second)
        {
            if(B[j].second>=jelenlegi)
            {
                hozzaad(i,j,jelenlegi);
                break;
            }
            A[i].second-=B[j].second;
            hozzaad(i,j,B[j].second);
            jelenlegi-=B[j].second;
            j++;
        }
        else
                    if(A[i].second<B[j].second)
        {
            if(A[i].second>=jelenlegi)
            {
                hozzaad(i,j,jelenlegi);
                break;
            }
            B[j].second-=A[i].second;
            hozzaad(i,j,A[i].second);
            jelenlegi-=A[i].second;
            i++;
        }
                else
        {
            if(A[i].second>=jelenlegi)
            {
                hozzaad(i,j,jelenlegi);
                break;
            }
            hozzaad(i,j,A[i].second);
            jelenlegi-=A[i].second;
            i++;
            j++;
        }
}
}
cout<<eredmeny.size()<<endl;
for(int i=0;i<eredmeny.size();i++)
{
    cout<<eredmeny[i].first.first<<" "<<eredmeny[i].first.second<<" "<<eredmeny[i].second<<endl;
}
}