using System;

namespace ConsoleApplication2
{
  internal class Program
  {
    public static void Main(string[] args)
    {
      int krompiri = 0;
      int brojpolja = 0;
      int dodatiKrompiri = 0;
      string linija1 = Console.ReadLine();
      string[] templinija1 = linija1.Split();
      int N = int.Parse(templinija1[0]);
      int M = int.Parse(templinija1[1]);
      int[,] polje = new int[N,M];
      int[,] dodataPolja = new int [N, M];

      int[,] ab = new int [2, N];
      int[,] cd = new int[2, M];

      for (int i = 0; i < N; i++)
      {
        string linija2 = Console.ReadLine();
        string[] temolinija2 = linija2.Split();
        ab[0, i] = int.Parse(temolinija2[0]);
        ab[1, i] = int.Parse(temolinija2[1]);
      }
      for (int i = 0; i < M; i++)
      {
        string linija2 = Console.ReadLine();
        string[] temolinija2 = linija2.Split();
        cd[0, i] = int.Parse(temolinija2[0]);
        cd[1, i] = int.Parse(temolinija2[1]);
      }

      for (int i = 0; i < N; i++)
      {
        for (int j = 0; j < M; j++)
        {
          int p = Math.Max(ab[0, i], cd[0, j]);
          int q = Math.Min(ab[1, i], cd[1, j]);
          if (p == 0 && q == 0) continue;
          else
          {
            dodatiKrompiri = q - p + 1;
            krompiri += dodatiKrompiri;
            if (dodatiKrompiri > 0) brojpolja++;
            dodataPolja[i, j] = dodatiKrompiri;
          }
        }
      }
      Console.WriteLine(krompiri);
      Console.WriteLine(brojpolja);
      for (int i = 0; i < N; i++)
      {
        for (int j = 0; j < M; j++)
        {
          if (dodataPolja[i, j] > 0) Console.Write((i + 1) + " " + (j + 1) + " " + dodataPolja[i, j] + "\n");
        }
      }
    }
  }
}