#include<bits/stdc++.h>
using namespace std;
struct hxz{
int p1,p2,p3;
};
hxz e[200000];
long long a[200000],b[200000];
int f[20010][3010],h[100000],g[100000];
bool u[200000];
int z,ans,n,m,k,i,xx,yy,x,y,j;
int main()
{
freopen("bird.in","r",stdin);
freopen("bird.out","w",stdout);
ios::sync_with_stdio(0);cin.tie();cout.tie();
cin>>n>>m>>k;
for (i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
}
for (i=0;i<=n+1;i++)
for (j=0;j<=2*m;j++)
f[i][j]=100000000;
for (i=1;i<=k;i++) { cin>>x>>y>>z;e[x].p2=y;e[x].p3=z;}
for (i=1;i<=m;i++) f[0][i]=0;
for (i=1;i<=n;i++)
{
if (e[i].p3==0)
{
x=a[i];y=b[i];
for (j=1;j<=m;j++) h[j]=100000000;
for (j=y+1;j<=m;j++) h[j-y]=f[i-1][j];
for (j=x+1;j<=2*m;j++)
f[i][j]=min(f[i][j],f[i-1][j-x]+1);
for (j=x+1;j<=2*m;j++)
f[i][j]=min(f[i][j],f[i][j-x]+1);
for (j=m+1;j<=2*m;j++)
{
f[i][m]=min(f[i][m],f[i][j]);
}
//cout<<f[2][m]<<endl;
for (j=y+1;j<=m;j++) f[i][j-y]=min(f[i][j-y],h[j-y]);
}
else
{
xx=e[i].p2+1;yy=e[i].p3-1;
x=a[i];y=b[i];
for (j=xx;j<=yy;j++) h[j]=100000000;
for (j=xx;j<=yy;j++)
if (j+y<=m) h[j]=f[i-1][j+y];
for (j=xx;j<=yy;j++)
if (j>x)
f[i][j]=min(f[i][j],f[i-1][j-x]+1);
for (j=xx;j<=yy;j++)
if ((j-x>=xx)&(j-x<=yy))
f[i][j]=min(f[i][j],f[i][j-x]+1);
for (j=xx;j<=yy;j++)
f[i][j]=min(f[i][j],h[j]);
}
}
ans=100000000;
for (i=1;i<=m;i++)
if (f[n][i]!=100000000)
ans=min(ans,f[n][i]);
if (ans!=100000000)
{
cout<<1<<endl;
cout<<ans<<endl;
}
else
{
cout<<0<<endl;ans=0;bool flag;
for (i=1;i<=n;i++)
if (e[i].p3!=0)
{
xx=e[i].p2+1;yy=e[i].p3-1;flag=false;
for (j=xx;j<=yy;j++)
if (f[i][j]!=100000000) {
flag=true;break;
}
if (flag) ans++;
else break;
}
cout<<ans<<endl;
}
return 0;
}