#include<bits/stdc++.h>
using namespace std;
const int N=1e4+5,M=1e4+5,INF=1e9;
int n,m,q,v1[N],v2[N],F[2][N];
int tc=1,ff=1;
struct C_
{
int x,l,r;
friend bool operator<(C_ a,C_ b)
{
return a.x<b.x;
}
}C[N];
int main()
{
scanf("%d %d %d",&n,&m,&q);
for(int i=1;i<=n;++i) scanf("%d %d",&v1[i],&v2[i]);
for(int i=1;i<=q;++i) scanf("%d %d %d",&C[i].x,&C[i].l,&C[i].r);
sort(C+1,C+q+1);
F[1][0]=F[0][0]=INF;
int I,cnt,last,V;
for(int i=1;i<=n;++i)
{
I=i%2;
F[I][m]=INF;
for(int j=1;j<=v1[i];++j)
{
last=0;
for(int s=j;s<m;s+=v1[i])
{
V=F[I^1][last]+(s-last)/v1[i];
F[I][s]=min(INF,V);
if(s+v2[i]<=m) F[I][s]=min(F[I][s],F[I^1][s+v2[i]]);
if(F[I^1][s]!=INF&&F[I^1][s]<V) last=s;
}
F[I][m]=min(F[I][m],F[I^1][last]+(m-last)/v1[i]+((m-last)%v1[i]!=0));
}
if(tc<=q&&i==C[tc].x)
{
cnt=0;
for(int j=1;j<=m;++j)
if(j<=C[tc].l||j>=C[tc].r) F[I][j]=INF;
else cnt+=(F[I][j]!=INF);
if(cnt==0)
{
printf("0\n%d",tc-1);
return 0;
}
else tc++;
}
}
cnt=INF;
I=n%2;
for(int i=1;i<=m;++i) cnt=min(F[I][i],cnt);
if(cnt==INF) printf("0\n%d",q);
else printf("1\n%d",cnt);
}