#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
int in(){
int ans=0,f=1;
char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) ans=ans*10+c-'0';
return ans*f;
}
int n,m,k;
int up[20010],down[20010],l[20010],h[20010];
int f[20010],g[20010];
int main(){
n=in();m=in();k=in();
for(int i=1;i<=n;i++){
up[i]=in();
down[i]=in();
}
for(int i=1;i<=k;i++){
int p=in();
l[p]=in();
h[p]=in();
}
int flag=1,cnt=0;
for(int i=1;i<=n;i++){
flag=0;
memset(f,0x3f,sizeof(f));
for(int j=m+up[i];j>=up[i]+1;j--) f[j]=min(f[j],g[j-up[i]]+1);
for(int j=up[i]+1;j<=m+up[i];j++){
f[j]=min(f[j],f[j-up[i]]+1);
}
for(int j=m+1;j<=m+up[i];j++) f[m]=min(f[m],f[j]);
for(int j=m-down[i];j>=1;j--) f[j]=min(f[j],g[j+down[i]]);
if(l[i]){
cnt++;
for(int j=m+up[i];j>=h[i];j--) f[j]=inf;
for(int j=1;j<=l[i];j++) f[j]=inf;
}
for(int j=1;j<=m;j++) if(f[j]!=inf) flag=1;
if(!flag){
cout<<"0\n"<<cnt-1;
return 0;
}
memcpy(g,f,sizeof(f));
}
cout<<"1\n";
int ans=inf;
for(int j=1;j<=m;j++) ans=min(ans,f[j]);
cout<<ans;
return 0;
}