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
****************************************************************/