import java.util.Scanner;
public class Main {
static int n;
static int m;
static int t;
static int sx;
static int sy;//起始坐标
static int fx;
static int fy;//终点坐标
static int count=0;//表示总方案数
static int[] dx= {1,-1,0,0};//控制横向坐标
static int[] dy= {0,0,-1,1};//控制纵向坐标
static boolean[][] visit; //控制点是否访问过
public static void Main(String[] args) {
Scanner scan=new Scanner(System.in);
n=scan.nextInt();
m=scan.nextInt();
t=scan.nextInt();
sx=scan.nextInt();
sy=scan.nextInt();
fx=scan.nextInt();
fy=scan.nextInt();
visit=new boolean[n+1][m+1];
int[][] arr=new int[n+1][m+1];//都需要+1,因为是从1开始进行的
for(int i=0;i<t;i++) { //接受t个障碍物的横纵坐标,并将障碍物存储到数组中
int x=scan.nextInt();
int y=scan.nextInt();
arr[x][y]=3;
}
dfs(arr,sx,sy);
System.out.println(count);
}
public static void dfs(int[][] arr,int x,int y) {
if(x==fx&&y==fy) {
count++;
}
visit[x][y]=true;//标记
for(int i=0;i<4;i++) {
int xx=x+dx[i];
int yy=y+dy[i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&!visit[xx][yy]&&arr[xx][yy]!=3) {
//这里要满足横坐标和纵坐标不能越界 已经访问的点不能再次访问 以及如果是障碍物则需
//要绕过
dfs(arr,xx,yy);
}
}
visit[x][y]=false;//回溯
}
}