#include int R, S; bool rows[20050]; bool cols[20050]; bool diag1[41000]; bool diag2[41000]; int dig1( int r, int s) { return s-1+r-1; } int dig2( int r, int s) { return S - s + r - 1; // TODO } bool isFree( int r, int s ) { return rows[r-1] && cols[s-1] && diag1[ dig1(r, s) ] && diag2[ dig2(r, s) ]; } int count( int r, int s ) { int res = 0; if ( rows[r-1] ) { for ( int i = 1; i <= S; ++i ) { if (isFree(r, i)) ++res; } } printf("%d", res); rows[r-1] = false; if ( cols[s-1] ) { for ( int i = 1; i <= R; ++i ) { if (isFree(i, s)) ++res; } } cols[s-1] = false; if ( diag1[ dig1(r, s) ] ) { for ( int i = r - 1, j = s + 1; r > 0 && s <= S; --r, ++s ) { if ( isFree(i, j) ) ++res; } for ( int i = r + 1, j = s - 1; r <= R && s > 0; ++r, --s ) { if ( isFree(i, j) ) ++res; } } diag1[ dig1(r, s) ] = false; if ( diag2[ dig2(r, s) ] ) { for ( int i = r - 1, j = s - 1; r > 0 && s > 0; --r, --s ) { if ( isFree(i, j) ) ++res; } for ( int i = r + 1, j = s + 1; r <= R && s <= S; ++r, ++s ) { if ( isFree(i, j) ) ++res; } } diag2[ dig2(r, s) ] = false; printf( "res: %d\n", res ); return res; } int main () { int N; scanf("%d %d %d", &R, &S, &N ); while ( !( R==0 && S == 0 && N == 0 ) ) { for ( int i = 0; i < R; ++i ) rows[i] = true; for ( int i = 0; i < S; ++i ) cols[i] = true; for ( int i = 0; i < R + S - 1; ++i ) diag1[i] = true; for ( int i = 0; i < R + S - 1; ++i ) diag2[i] = true; int obs = 0; for ( int j = 0; j < N; ++j ) { int r,s; scanf("%d %d", &r, &s); //obs += count( r, s ); rows[r-1] = false; cols[s-1] = false; diag1[ dig1(r, s) ] = false; diag2[ dig2(r, s) ] = false; } int cnt = 0; for ( int i = 1; i <= R; ++i ) { for ( int j = 1; j <= S; ++j ) { if ( isFree(i, j) ) { ++cnt; } } } printf("%d\n", cnt); scanf("%d %d %d", &R, &S, &N ); } return 0; }