1 #include<bits/stdc++.h>
2 using namespace std;
3 #define R register int
4 #define rep(i,a,b) for(R i=a;i<=b;i++)
5 #define Rep(i,a,b) for(R i=a;i>=b;i--)
6 #define ms(i,a) memset(a,i,sizeof(a))
7 #define gc() getchar()
8 template<class T>void read(T &x){
9 x=0; char c=0;
10 while (!isdigit(c)) c=gc();
11 while (isdigit(c)) x=x*10+(c^48),c=gc();
12 }
13 int const N=10000+3;
14 int const M=100+3;
15 int const inf=1e8;
16 struct Edge{
17 int to,nt,w;
18 }E[M];
19 int cnt,H[N],t,s,n,c[N],d[N],f[N][M],g[M];
20 void add(int a,int b,int c){
21 E[cnt]=(Edge){b,H[a],c}; H[a]=cnt++;
22 }
23 int main(){
24 read(t); read(s) ;read(n);
25 ms(-1,H);
26 while (s--){
27 int x,y,z;
28 read(x); read(y); read(z);
29 add(x,x+y,z);
30 }
31 rep(i,0,100) g[i]=inf;
32 rep(i,1,n) read(c[i]),read(d[i]),g[c[i]]=min(g[c[i]],d[i]);
33 rep(i,1,100) g[i]=min(g[i],g[i-1]);
34 ms(-1,f);
35 f[0][1]=0;
36 rep(i,0,t)rep(j,1,100) if(f[i][j]>-1) {
37 f[i+1][j]=max(f[i+1][j],f[i][j]);
38 for(R k=H[i];k!=-1;k=E[k].nt){
39 int v=E[k].to;
40 if(E[k].w<=j) continue;
41 if(v>t) continue;
42 f[v][E[k].w]=max(f[v][E[k].w],f[i][j]);
43 }
44 if(i+g[j]<=t) f[i+g[j]][j]=max(f[i+g[j]][j],f[i][j]+1);
45 }
46 int ans=0;
47 rep(i,0,100) ans=max(ans,f[t][i]);
48 cout<<ans<<endl;
49 return 0;
50 }