#include<bits/stdc++.h>
using namespace std;
const int N=10005;
const int INF=0x3f3f3f;
int dp[N][1005],x[N],y[N],h1[N],h2[N];
bool vis[N][1005],flag[N];
int main(){
int n,m,q;
cin>>n>>m>>q;
for(int i=1;i<=n;i++)cin>>x[i]>>y[i];
for(int i=1;i<=n;i++)h1[i]=1,h2[i]=m;
for(int i=1;i<=q;i++){
int p,l,h;
cin>>p>>l>>h;
flag[p]=1;
h1[p]=l+1,h2[p]=h-1;
}
memset(dp,INF,sizeof(dp));
for(int i=1;i<=m;i++)dp[0][i]=0;
for(int i=1;i<=n;i++){
for(int j=x[i]+1;j<=m+x[i];j++)
dp[i][j]=min(dp[i-1][j-x[i]]+1,dp[i][j-x[i]]+1);
for(int j=m+1;j<=m+x[i];j++)
dp[i][m]=min(dp[i][m],dp[i][j]);
for(int j=1;j<=m-y[i];j++)
dp[i][j]=min(dp[i][j],dp[i-1][j+y[i]]);
for(int j=1;j<h1[i];j++)dp[i][j]=INF;
for(int j=h2[i]+1;j<=m;j++)dp[i][j]=INF;
}
int ans=INF;
for(int i=1;i<=m;i++)ans=min(ans,dp[n][i]);
if(ans<INF){
cout<<"1\n"<<ans<<"\n";
return 0;
}
cout<<"0\n";
int i,j;
for(i=n;i>=1;i--){
for(j=1;j<=m;j++)if(dp[i][j]<INF)break;
if(j<=m)break;
}
ans=0;
for(int j=1;j<=i;j++)if(flag[j])ans++;
cout<<ans<<"\n";
return 0;
}