#include<bits/stdc++.h>
using namespace std;
#define debug cout<<"debug"<<endl;
int n,m,k;
int x[10001],y[10001];
int dp[10001][1001];
int l[10001],h[10001];
int main()
{
cin>>n>>m>>k;
for(int i=0; i<n; i++) cin>>x[i]>>y[i];
for(int i=1; i<=k; i++)
{
int q;
cin>>q>>l[q]>>h[q];
}
int rec=0;
for(int q=1; q<=n; q++)
{
for(int p=1; p<=m-1; p++)
{
dp[q][p]=INT_MAX;
int i=1;
if(p+y[q-1]<=m&&dp[q-1][p+y[q-1]]!=-1) dp[q][p]=dp[q-1][p+y[q-1]];
while(p-i*x[q-1]>=1)
{
if(dp[q-1][p-i*x[q-1]]!=-1) dp[q][p]=min(dp[q][p],dp[q-1][p-i*x[q-1]]+i);
i++;
}
if(dp[q][p]==INT_MAX) dp[q][p]=-1;
}
dp[q][m]=INT_MAX;
for(int p=1; p<=m-1; p++)
{
int i=(m-p+1)/x[q-1]+1;
if(dp[q-1][p]!=-1) dp[q][m]=min(dp[q][m],dp[q-1][p]+i);
}
if(dp[q][m]==INT_MAX) dp[q][m]=-1;
if(l[q]!=0||h[q]!=0)
{
int check=0;
for(int i=1; i<=l[q]; i++) dp[q][i]=-1;
for(int i=m; i>=h[q]; i--) dp[q][i]=-1;
for(int i=1; i<=m; i++) if(dp[q][i]!=-1&&check!=1) rec++,check=1;
}
}
int ans=INT_MAX;
for(int i=1; i<=m; i++) if(dp[n][i]!=-1) ans=min(ans,dp[n][i]);
if(ans==INT_MAX)
{
cout<<0<<endl<<rec;
}
else cout<<1<<endl<<ans;
return 0;
}