#include<bits/stdc++.h>
using namespace std;
struct node{
int p,l,h;
};
bool comp(node a,node b){
return a.p<b.p;
}
int n,m,k,x[10005],y[10005],a1,b1,c1,d1,ans=9999999,ans2=0;
int screen=0,dp[10005][1005]={0};
node z[10005];
int fun(int a,int b){
if(b<=0) return 9999999;
if(dp[a][b]) return dp[a][b];
for(int i=0;i<k;i++){
if(a==z[i].p){
if(!(b>z[i].l&&b<z[i].h)){
ans2=max(ans2,i);
return dp[a][b]=9999999;
}
break;
}
}
if(a==n) {
return screen;
}
for(int i=0;b+(i-1)*x[a]<=m;i++){
if(i==0) ans=min(ans,fun(a+1,b-y[a]));
else{
screen+=i;
ans=min(ans,fun(a+1,min(m,b+i*x[a])));
screen-=i;
}
}
return dp[a][b]=ans;
}
int main(){
cin>>n>>m>>k;
for(int i=0;i<n;i++) scanf("%d%d",&x[i],&y[i]);
for(int i=0;i<k;i++) scanf("%d%d%d",&z[i].p,&z[i].l,&z[i].h);
sort(z,z+k,comp);
for(int i=1;i<=m;i++){
int t=fun(0,i);
}
if(ans!=9999999) cout<<1<<endl<<ans;
else cout<<0<<endl<<ans2;
return 0;
}