#include <bits/stdc++.h>
using namespace std;
int n,m,k,p,l,h,dx[10005],dy[1005],f[10005][1005],ans=2139062143;
bool flag[10005][1005],flag2[10005];
int main()
{
cin>>n>>m>>k;
memset (f,127,sizeof (f));
for (int i=0;i<n;i++)
{
cin>>dx[i]>>dy[i];
}
for (int i=1;i<=k;i++)
{
cin>>p>>l>>h;
for (int j=0;j<=l;j++)
{
flag[p][j]=true;
}
for (int j=h;j<=m;j++)
{
flag[p][j]=true;
}
flag2[p]=true;
}
for (int i=1;i<=m;i++)
{
f[0][i]=0;
}
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
if (flag[i][j])
{
continue;
}
if (j+dy[i-1]<=m)
{
if (!flag[i-1][j+dy[i-1]])
{
f[i][j]=min (f[i][j],f[i-1][j+dy[i-1]]);
}
}
if (j>=1&&j<m)
{
for (int k=1;j-k*dx[i-1]>=1;k++)
{
if (flag[i-1][j-k*dx[i-1]])
{
continue;
}
f[i][j]=min (f[i][j],f[i-1][j-k*dx[i-1]]+k);
}
}
else if (j==m)
{
for (int k=1;k<=m;k++)
{
if (flag[i-1][k])
{
continue;
}
int tw=(m-k)/dx[i-1];
if (m-k>dx[i-1]&&(m-k)%dx[i-1])
{
tw++;
}
else if (m-k<dx[i-1])
{
tw++;
}
f[i][m]=min (f[i][m],f[i-1][k]+tw);
}
}
}
}
for (int i=1;i<=m;i++)
{
ans=min (f[n][i],ans);
}
if (ans==2139062143)
{
int acnt=0;
for (int i=0;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
if (f[i][j]!=2139062143&&flag2[i])
{
acnt++;
break;
}
}
}
cout<<0<<endl<<acnt<<endl;
}
else
{
cout<<1<<endl<<ans<<endl;
}
return 0;
}