var t,a,w:array[1..1000]of longint;
ts,as,zt,za,i,j,n,m,k,o,p:longint;
f:array[-21..100,-79..100]of qword;
ss:array[-21..100,-79..100,1..100]of longint;
begin
assign(input,’e.in’);
reset(input);
readln(zt,za);
readln(n);
for i:=-21 to zt do
for j:=-79 to za do
if (i>0)or(j>0) then f[i,j]:=maxlongint;
for i:=1 to n do readln(t[i],a[i],w[i]);
close(input);
for i:=1 to zt do
for j:=1 to za do
begin
for k:=1 to n do if ss[i-t[k],j-a[k],k]=0 then
begin
if f[i,j]>f[i-t[k],j-a[k]]+w[k]
then
begin
f[i,j]:=f[i-t[k],j-a[k]]+w[k];o:=k;
end;
end;
ss[i,j,o]:=1;
end;
write(f[zt,za]);
end.
#include<stdio.h>
#include<stdlib.h>
int min(int x,int y)
{
return (x>y?y:x);
}
int main(void)
{
int t,a,n,f[88][88];
scanf("%d%d%d",&a,&t,&n);
for (int i=0;i<=a;i++)
for (int j=0;j<=t;j++) f[i][j]=9999999;
f[0][0]=0;
for (int i=1;i<=n;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
for (int j=a;j>=0;j--)
for (int k=t;k>=0;k--)
if (f[j][k]!=9999999)
{
int p,s;
p=min(j+x,a);
s=min(k+y,t);
if (f[j][k]+z<f[p][s])
f[p][s]=f[j][k]+z;
}
}
printf("%d\n",f[a][t]);
return 0;
}