#include<bits/stdc++.h>
using namespace std;
int n,m,k,x[10001][2],p[10001][2];
int f[10001][1001][2];
void read_p() {
int p_,l,h;
scanf("%d %d %d",&p_,&l,&h);
p[p_][0]=h;
p[p_][1]=l;
}
int main() {
scanf("%d %d %d",&n,&m,&k);
for(int i=1; i<=n; i++) {
scanf("%d %d",&x[i][0],&x[i][1]);
p[i][0]=m+1;
f[0][i][0]=1;
}
for(int i=1; i<=k; i++)
read_p();
for(int i=1; i<=n; i++) {
bool can=false;
for(int j=1; j<=m; j++) {
if(f[i-1][j][0]) {
int k=0;
if(j-x[i][1]>p[i][1]&&j-x[i][1]<p[i][0])
f[i][j-x[i][1]][1]=(f[i][j-x[i][1]][0]?min(f[i][j-x[i][1]][1],f[i-1][j][1]):f[i-1][j][1]),f[i][j-x[i][1]][0]=1;
for(k=1; j+k*x[i][0]<=m; k++)
if(j+k*x[i][0]>p[i][1]&&j+k*x[i][0]<p[i][0])
f[i][j+k*x[i][0]][1]=(f[i][j+k*x[i][0]][0]?min(f[i][j+k*x[i][0]][1],f[i-1][j][1]+k):f[i-1][j][1]+k),f[i][j+k*x[i][0]][0]=1;
if(m>p[i][1]&&m<p[i][0])
f[i][m][1]=(f[i][m][0]?min(f[i][m][1],f[i-1][j][1]+k):f[i-1][j][1]+k),f[i][m][0]=1;
}
}
for(int j=1; j<=m; j++)
if(f[i][j][0]) {
can=true;
break;
}
if(!can) {
int num=0;
for(int j=1; j<i; j++)
if(p[j][0]!=m+1)
num++;
printf("0\n%d",num);
return 0;
}
}
int c=0,mi=INT_MAX;
for(int i=1; i<=m; i++)
if(f[n][i][0]>0)
c=1,mi=min(mi,f[n][i][1]);
printf("%d\n%d",c,mi);
}