#include<bits/stdc++.h>
using namespace std ;
#define int long long
const int N = 1e4 + 11 ;
int n , m , k , x[N] , y[N] , l[N] , r[N] , dp[N][1003] , ans[N] , cnt ;
bool vis [N] ;
signed main ( ) {
cin >> n >> m >> k ;
for (int i = 1 ; i <= n ; i ++ )
cin >> x[i] >> y[i] ;
for (int i = 1 ; i <= k ; i ++ ) {
int p , a , b ;
cin >> p >> a >> b ;
l[p] = a ;
r[p] = b ;
vis[p] = 1 ;
}
for (int i = 0 ; i <= n ; i ++ ) {
if (! l[i] && ! r[i] ) {
l[i] = 0 ;
r[i] = 2 * m + 1 ;
}
}
memset (ans , 0x3f ,sizeof ans ) ;
memset (dp , 0x3f , sizeof dp ) ;
ans[0] = 0 ;
for (int i = 1 ;i <= m ; i ++ )
dp[0][i] = 0 ;
for (int i = 1 ; i <= n ; i ++ ) {
for (int j = l[i] + 1 ; j < r[i] ; j ++ ) {
if (j - x[i] > 0)
dp[i][min (j , m) ] = min (dp[i][min (j , m ) ] , dp[i - 1][j - x[i] ] + 1 ) ;
for (int K = 2 ; ; K *= 2 ) {
if (j - K * x[i] > 0 )
dp[i][min (j , m) ] = min (dp[i][min (j , m ) ] , dp[i][j - K * x[i] ] + K ) ;
else
break ;
}
if (j + y[i] < min (r[i - 1] , m + 1 ) )
dp[i][j] = min (dp[i][j] , dp[i - 1][j + y[i] ] ) ;
ans[i] = min (dp[i][j] , ans[i] ) ;
}
}
if (ans[n] > 1e8 ) {
cout << 0 << endl ;
for (int i = n - 1 ; i >= 0 ; i -- ) {
if (ans[i] <= 1e8){
cout << k - cnt << endl ;
return 0 ;
}
cnt += vis[i] ;
}
}
else {
cout << 1 << endl ;
cout << ans[n] <<endl;
}
return 0 ;
}