#include<bits/stdc++.h>
using namespace std;
struct node {int x, y, z;}a[10010];
int n, m, k, b[10010], c[10010], f[10010][1010], cnt = 1, minn = 1e9, flag, QWQ, QAQ;
bool cmp(node a, node b) {return a.x < b.x;}
signed main(){
cin >> n >> m >> k;
for(int i = 0;i < n;i ++) cin >> b[i] >> c[i];
for(int i = 1;i <= k;i ++) cin >> a[i].x >> a[i].z >> a[i].y;
sort(a + 1, a + k + 1, cmp);
for(int i = 0;i <= n;i ++) for (int j = 0;j <= m;j ++) f[i][j] = 1e9;
for(int i = 1;i <= m;i ++) f[0][i] = 0;
for(int i = 1;i <= n;i ++) {
QWQ = 1, QAQ = m;
if(a[cnt].x == i) QAQ = a[cnt].y - 1, QWQ = a[cnt ++].z + 1;
for(int j = 1;j <= QAQ;j ++) {
for(int k = j - b[i - 1];k <= m;k ++) {
if(k > j - b[i - 1] && j < m) break;
if(k >= 1) f[i][j] = min(f[i][j], min(f[i - 1][k], f[i][k]) + 1);
}
}
for(int j = QWQ;j <= QAQ;j ++) if (j + c[i - 1] <= m) f[i][j] = min(f[i][j], f[i - 1][j + c[i - 1]]);
for(int j = 1;j <= QWQ - 1;j ++) f[i][j] = 1e9;
}
for(int i = n;i >= 1;i --) {
for (int j = 1;j <= m;j ++) if (f[i][j] != 1e9) flag = 1, minn = min(minn, f[i][j]);
if (flag != 0) {
if (i == n) cout << 1 << endl << minn;
else for (int j = k;j >= 1;j --) if (i >= a[j].x) {cout << 0 << endl << j;break;}
return 0;
}
}
}