Program bird;
Const
  infile = 'bird15.in';
  outfile = 'bird.out';//bird2.ans
Var
  i1, max1, n, m, p, i, j, k, x1, y1, z, xx, xxx, Ans : longint;
  ff : Boolean;
  f : Array[0..2000, 0..10100] of longint;
  flag : Array[0..2000, 0..11000] of Boolean;
  x, y, b, up, drop : Array[0..10000] of longint;
Function min(x, y : longint) : longint;
Begin
  If x < y Then exit(x) Else exit(y);
End;
Begin
  //Assign(input, infile);
 // Assign(output, outfile);
 // Reset(input);
 // Rewrite(output);

  Readln(n, m, p);
  For i :=0 To n - 1 DO Readln(up[i], drop[i]);
  Fillchar(flag, sizeof(flag), true);
  For i :=1 To n DO Begin
    y[i] := 0;
    x[i] := m + 1;
  End;
  For i :=1 To p Do Begin
    Readln(b[i], x1, y1);
    x[b[i]] := x1;
    y[b[i]] := y1;
    x[b[i]] := m - x[b[i]] + 1;
    y[b[i]] := m - y[b[i]] + 1;
  End;

  For i :=0 To m Do
    For j :=0 TO n Do
      f[i, j] := maxlongint - 10000;
  For i :=1 TO m Do f[i, 0] := 0;


  For j :=1 To n DO Begin
    For i :=m DownTo 1 DO Begin
      If i <= m - up[j - 1] Then Begin
        x1 := i + up[j - 1];
        If x1 <= m Then Begin
            f[i, j] := min(f[i, j], f[x1, j - 1] + 1);
            f[i, j] := min(f[i, j], f[x1, j] + 1);
        End;
      End;
      If i = 1 Then Begin
        If i + up[j - 1] <= m Then
          For k :=i + up[j - 1] Downto 1 Do Begin

              f[i, j] := min(f[i, j], f[k, j - 1] + 1);
              f[i, j] := min(f[i, j], f[k, j] + 1);
          End;
      End;
    End;
    For i :=y[j] + 1 To x[j] - 1  DO Begin
      If i - drop[j - 1] > 0 Then
          f[i, j] := min(f[i, j], f[i - drop[j - 1], j - 1]);
    End;

    For i :=0 To y[j] Do Begin
//      Writeln(i, ' ', j);
      f[i, j] := maxlongint - 10000;
    ENd;
    For i :=x[j] To m DO BEgin
//      Writeln(i, j);
      f[i, j] := maxlongint - 10000;
    ENd;
  End;


{  For i :=1 TO m DO Begin
    For j :=0 TO n Do Write(f[i, j]:11);
    Writeln;
  End;
}
 Ans := maxlongint - 10000;
 For i :=1 TO m DO Begin
   If flag[i, n] Then
    If f[i, n] < Ans Then Begin
      Ans := f[i, n];
//      Writeln(i, ' ', Ans);
    End;
  End;
  IF Ans = maxlongint - 10000 Then Writeln(0) Else Begin
    Writeln(1);
    Writeln(Ans);
  End;
  IF Ans = maxlongint - 10000 Then Begin
    max1 := 0;
    For i1 :=1 To p Do Begin
      ff := true;
      For i :=1 To m DO
        If f[i, b[i1]] < maxlongint - 10000 Then Begin
          Inc(max1);
          ff := false;
          Break;
        End;
//      If ff Then Writeln(b[i1]);
//      If ff Then Break;
    End;
    Writeln(max1);
  End;


  //Close(input);
  //Close(output);
End.
/**************************************************************
	Problem: 2336
	User: admin
	Language: Pascal
	Result: Wrong Answer
****************************************************************/