program ith;

var pole : array [0..20000,0..20000] of boolean;
var i, x, y, n, xk, yk : longint;

var j, k, pocet : longint;

var radky : array [0..20000] of boolean;
	sloupce : array [0..20000] of boolean;
	d1 : array [1..40000] of boolean;
	d2 : array [1..40000] of boolean;

function min(a,b : longint) : longint;
begin

	if a >= b then
		min := b
	else
		min := a;

end;

function dia1(px, py : longint) : longint;
begin

	dia1 := y - py + px;

end;

function dia2(px, py : longint) : longint;
begin

	dia2 := x + y + 1 -px -py;

end;

begin

while true do
begin

	readln(x, y, n);
	
	for i:=0 to x-1 do
	begin
		for j:=0 to y-1 do
		begin
			pole[i][j] := false;
		end;
	end;
	
	for i:=0 to y-1 do
		radky[i] := false;
	for i:=0 to x-1 do
		sloupce[i] := false;
	for i:=0 to x+y-1 do
	begin
		d1[i] := false;
		d2[i] := false;
	end;

	if ((x = 0) and (y = 0) and (n = 0)) then
		break;
	
	for i:=0 to n-1 do
	begin
	
		readln(xk, yk);
		dec(xk);
		dec(yk);
		
		
			if not radky[yk] then
			begin
				for j:=0 to x-1 do
					pole[j][yk] := true;
				radky[yk] := true;
			end;
			
			if not sloupce[xk] then
			begin
				for j:=0 to y-1 do
					pole[xk][j] := true;
				sloupce[xk] := true;		
			end;
				
			if not d1[dia1(xk, yk)] then
			begin
					
				for j:=1 to min(xk, yk) do
					pole[xk-j][yk-j] := true;

				for j:=1 to min(x-xk, y-yk) do
					pole[xk+j][yk+j] := true;
					
				d1[dia1(xk, yk)] := true;
			
			end;
			
			if not d2[dia2(xk, yk)] then
			begin
			
				for j:=1 to min(x-xk, yk) do
					pole[xk+j][yk-j] := true;

				for j:=1 to min(xk, y-yk) do
					pole[xk-j][yk+j] := true;
					
				d2[dia2(xk, yk)] := true;
			
			end;
				
			pole[xk][yk] := true;		
	
	end;
	
	pocet := 0;
	
	for i:=0 to x-1 do
	begin
		for j:=0 to y-1 do
		begin
			if not pole[j][i] then
			begin
				inc(pocet);
				//write(' ');
			end else
			begin
				//write('*');
			end;
		end;
		//writeln;
	end;
		
	writeln(pocet);
	
end;

end.
