{$mode objfpc}
{$COPERATORS ON}
uses math;
const fi=''; fo='';
type Titems=record w,h:longint; end;
var fin,fout:Text;
n,R,C,nTest:longint;
a:array[1..200+3] of Titems;
f:array[0..600+7,0..600+7] of longint;
procedure doc;
var i:longint;
begin
read(fin,C,R);
read(fin,n);
for i:=1 to n do
read(fin,a[i].w,a[i].h);
end;
function DP(row,col:longint):longint;
var Res,i:longint;
begin
if F[Row,Col]<>-1 then exit(f[Row,Col]);
Res:=Row*Col;
for i:=1 to n do
if (Row=a[i].h) and (Col=a[i].w) then Res:=0;
for i:=1 to Row-1 do
Res:=min(Res,DP(i,Col)+DP(Row-i,Col));
for i:=1 to Col-1 do
Res:=min(Res,DP(Row,i)+DP(Row,Col-i));
F[Row,Col]:=Res;
Exit(Res);
end;
procedure Solve;
begin
fillchar(F,sizeof(F),255);
writeln(fout,DP(R,C));
end;
begin
assign(fin,fi);
assign(fout,fo);
reset(fin);rewrite(fout);
//readln(fin,nTest);
// repeat
Doc;
Solve;
//dec(nTest);
//until nTest=0;
close(fin);close(fout);
end.