#include<bits/stdc++.h>
#define MAX_N 10010
#define MAX_M 1010
#define MAX_K 10010
using namespace std;
int n,m,k;
int x[MAX_N],y[MAX_N];
long long dp[MAX_N][MAX_M];
struct node {
int p,l,h;
};
node pipe_w[MAX_K];
int main() {
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
}
for(int i=1;i<=k;i++) {
cin>>pipe_w[i].p>>pipe_w[i].l>>pipe_w[i].h;
}
sort(pipe_w+1,pipe_w+1+k,[](node x,node y){return x.p<y.p;});
int cnt=1;
long long sum=LLONG_MAX-100;
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
dp[i][j]=LLONG_MAX-100;
}
}
for(int i=1;i<=m;i++) {
dp[0][i]=0;
}
for(int i=1;i<=n;i++) {
dp[i][0]=LLONG_MAX-100;
}
for(int i=1;i<=n;i++) {
sum=LLONG_MAX-100;
for(int j=1;j<=m;j++) {
dp[i][j]=LLONG_MAX-100;
}
for(int j=x[i]+1;j<m;j++) {
dp[i][j]=min(dp[i][j],min(dp[i-1][j-x[i]],dp[i][j-1])+1);
}
for(int j=m-x[i];j<=m;j++) {
dp[i][m]=min(dp[i][m],min(dp[i-1][j],dp[i][j])+1);
}
for(int j=1;j<=m-y[i];j++) {
dp[i][j]=min(dp[i][j],dp[i-1][j+y[i]]);
}
if(pipe_w[cnt].p==i) {
for(int j=1;j<=pipe_w[cnt].l;j++) {
dp[i][j]=LLONG_MAX-100;
}
for(int j=pipe_w[cnt].h;j<=m;j++) {
dp[i][j]=LLONG_MAX-100;
}
}
for(int j=1;j<=m;j++) {
sum=min(sum,dp[i][j]);
}
if(sum==LLONG_MAX-100) {
cout<<0<<endl<<cnt-1<<endl;
return 0;
}
if(pipe_w[cnt].p==i) {
cnt++;
}
}
cout<<1<<endl<<sum<<endl;
return 0;
}