#include <bits/stdc++.h>
using namespace std;
struct good {
int v, w;
};
good h[100001];
int f[10001];
int time(string s) {
int len = s.size();
int ans = 0;
if (s[1] == ':') {
ans += (s[0] + '0') * 60 + (s[2] + '0') * 10 + (s[3] + '0');
} else {
ans += (s[0] + '0') * 600 + (s[1] + '0') * 60 + (s[3] + '0') * 10 + (s[4] + '0');
}
return ans;
}
int main() {
string s1, s2;
cin >> s1 >> s2;
int T = time(s2) - time(s1);
int n;
cin >> n;
int t = 0;
for (int i = 1; i <= n; i++) {
int v1, w1, p;
cin >> v1 >> w1 >> p;
if (p == 0) {
int s = T / v1;
for (int j = 1; s >= j; j *= 2) {
h[++t].v = j * v1;
h[t].w = j * w1;
s -= j;
}
if (s) {
h[++t].v = s * v1;
h[t].w = s * w1;
}
} else if (p == 1) {
h[++t].v = v1;
h[t].w = w1;
} else {
int s = p;
for (int j = 1; s >= j; j *= 2) {
h[++t].v = j * v1;
h[t].w = j * w1;
s -= j;
}
if (s) {
h[++t].v = s * v1;
h[t].w = s * w1;
}
}
}
for (int i = 1; i <= t; i++) {
for (int j = T; j >= h[i].v; j--) {
f[j] = max(f[j], f[j - h[i].v] + h[i].w);
}
}
cout << f[T];
}