using System;
class krompir
{
    static void Main()
    {
        string[] st = Console.ReadLine().Split();
        int n = int.Parse(st[0]);
        int m = int.Parse(st[1]);
        int[] b = new int[m];
        int[] t = new int[m];
        int[] min = new int[m];
        int[] max = new int[m]; 
        int p = 0;
        for (int i = 0; i < n; i++)
        {
            string[] s = Console.ReadLine().Split();
            int a = int.Parse(s[0]);
            int q = int.Parse(s[1]);
            p= q;
        }
        int u = 0;
        int k = 0;
        for (int i = 0; i < m; i++)
        {
            string[] s = Console.ReadLine().Split();
            int c = int.Parse(s[0]);
            int d = int.Parse(s[1]);
            min[i]=c;
            u+=c;
            max[i]=d;
        }
        for(int i=0; i<m; i++)
        {
            if(max[i]!=0 && u<p)
            {
                if(u+max[i]<p && max[i]!=min[i])
                {
                    b[k]=max[i]+min[i];
                    u+=max[i];
                    t[k]=i;
                    k++;
                }
                else
                {
                    if(max[i]!=min[i])
                    {
                        b[k]=(p-u)+min[i];
                        u+=(p-u);
                        t[k]=i;
                        k++;
                    }
                    else
                    {
                        if(min[i]!=0)
                        {
                            b[k]=min[i];
                            t[k]=i;
                            k++;
                        }
                    }
                }
            }
            else if(min[i]!=0)
            {
                b[k]=min[i];
                t[k]=i;
                k++;
            }
        }
        Console.WriteLine(u);
        Console.WriteLine(k);
        for (int i = 0; i < k; i++)
        {
            Console.WriteLine("1" + " " + (t[i] + 1) + " " + b[i]);
        }
    }
}