#include <bits/stdc++.h>
using namespace std;
bool can = true;
int n,m,dp[10010][1010],k,x[10010],y[10010],p[10010],l[10010],h[10010],cnt;
int main(){
cin >> n >> m >> k;
for(int i = 0;i < n;i ++){
cin >> x[i] >> y[i];
}
for(int i = 1;i <= k;i ++){
int a,b,c;
cin >> a >> b >> c;
p[a] = 1;
l[a] = b;
h[a] = c;
}
for(int i = 1;i <= n;i ++){
if(!p[i]){
h[i] = m + 1;
}
}
memset(dp,0x3f,sizeof(dp));
for(int i = 1;i <= m;i ++){
dp[0][i] = 0;
}
for(int i = 0;i < n;i ++){
for(int j = 1;j <= m;j ++){
int cntnow = 1;
while(j + cntnow * x[i] < h[i + 1]){
dp[i + 1][j + cntnow * x[i]] = min(dp[i + 1][j + cntnow * x[i]],dp[i][j] + cntnow);
cntnow ++;
}
if(h[i + 1] == m + 1){
dp[i + 1][m] = min(dp[i + 1][m],dp[i][j] + cntnow);
}
if(j - y[i] > l[i + 1]){
dp[i + 1][j - y[i]] = min(dp[i + 1][j - y[i]],dp[i][j]);
}
}
}
for(int i = 1;i <= n;i ++){
bool flag = false;
for(int j = l[i];j <= h[i] - 1;j ++){
if(dp[i][j] != 0x3f3f3f3f){
flag = true;
}
}
if(flag && p[i]){
cnt ++;
}
if(!flag){
can = flag;
break;
}
}
if(!can){
cout << 0 << endl << cnt << endl;
}
else{
int Min = 0x3f3f3f3f;
for(int i = 1;i <= m;i ++){
Min = min(Min,dp[n][i]);
}
cout << 1 << endl << Min << endl;
}
return 0;
}