#include <bits/stdc++.h>
using namespace std;
const int N = 10;
int n, m, t, a, b;
int sti, stj, edi, edj, ti, tj;
int cnt = 0;
char tab[N][N];
int dx[4] = {-1, 0, 0 , 1}, dy[4] = {0, -1, 1, 0};
void dfs(int i, int j)
{
if(i == edi && j == edj) // 找到 终点
{
cnt ++;
return;
}
for (int k=0;k < 4;k ++)
{
// (a, b)是下一步
a = i + dx[k], b = j + dy[k];
if(a <= n && a > 0 && b <= m && b > 0 && tab[a][b] != '1' && tab[a][b] != '2') // 下一步没有超过边界并且没有走过不是障碍
{
tab[a][b] = '1';
dfs(a, b);
tab[a][b] = '0';
}
}
}
int main()
{
cin >> n >> m >> t;
cin >> sti >> stj >> edi >> edj;
// 0 未访问 1 访问 -1 墙
memset(tab, '0', sizeof tab);
while(t --)
{
cin >> ti >> tj;
tab[ti][tj] = '2'; // 1 围墙
}
tab[sti][stj] = '1'; // 起点标记走过
dfs(sti, stj);
cout << cnt;
}