#include <iostream>
#include <time.h>
using namespace std;
int main()
{
int M, N;//行和列
//printf("请输入行和列");
cin >> M>>N;
int **matrix=new int*[M];//二维动态数组
for (int i = 0; i < M; i++)
{
matrix[i] = new int[N];
}
//二维数组直接置为0
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
matrix[i][j] = 0;
}
}
srand(time(NULL));
int n ;//雷的数量
//printf("请输入雷的数量:");
cin >> n;
while (n--)
{
int line;
int row ;
cin >> line >> row;
if (matrix[line-1][row-1] == 0)
{
matrix[line-1][row-1] = -1;
}
else
{
continue;
}
}
int res = 0;//总和
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
if (matrix[i][j] != -1)
{
int leftIndex = j - 1;
int rightIndex = j + 1;
int topIndex = i - 1;
int bottomIndex = i + 1;
int left = leftIndex;
int top = topIndex;
int leftMoveStep = 0;
int topMoveStep = 0;
int count = 0;
while (true)
{
//周围八个位置的状态
if (left >= 0 && left < M && top >= 0 && top < N)
{
if (matrix[top][left] == -1)
{
count++;
}
}
//
if (left == leftIndex && top == i)
{
break;
}
if (left - leftIndex < 2 && top == topIndex)
{
leftMoveStep = 1;
topMoveStep = 0;
}
else if (left == rightIndex && top == topIndex)
{
topMoveStep = 1;
leftMoveStep = 0;
}
else if (left == rightIndex && top == bottomIndex)
{
topMoveStep = 0;
leftMoveStep = -1;
}
else if (left == leftIndex && top == bottomIndex)
{
leftMoveStep = 0;
topMoveStep = -1;
}
else if (left - leftIndex < 2 && top == bottomIndex)
{
leftMoveStep = -1;
topMoveStep = 0;
}
left += leftMoveStep;
top += topMoveStep;
}
matrix[i][j] = count;
res += count;
}
}
}
cout << res;
}