type board = array[0..31, 0..31] of boolean; var f : text; a : board; i, j, k, l, m, n : byte; function king( e : board; x, y : byte ) : board; var z, t : byte; begin for z := x - 1 to x + 1 do for t := y - 1 to y + 1 do e[z, t] := true; exit(e) end; function full(c : board) : boolean; var d : boolean; begin for d in c do if not(d) then exit(false); exit(true) end; function libai3( b : board; x0, y0 : byte ) : byte; type tmp = record n, x, y : byte end; var max : tmp; t, x, y : byte; begin if full(b) then exit(0); max.n := 0; for x := x0 to m do for y := y0 to n do if not(b[x, y]) then begin t := libai3(king(b, x, y), x + 1, y + 1) + 1; writeln(t); if t > max.n then begin max.x := x; max.y := y; max.n := t end end; exit(max.n) end; begin assign(f, 'BAI3.INP'); reset(f); readln(f, m, n, k); for l := 1 to k do begin readln(f, i, j); a := king(a, i, j) end; close(f); assign(f, 'BAI3.OUT'); rewrite(f); writeln(libai3(a, 1, 1)); close(f) end.