#include <stdio.h>
FILE *f=fopen("poarta.in","r");
FILE *g=fopen("poarta.out","w");
int x,y,dx[4]={1,0,-1,0},dy[4]={0,1,0,-1},l,cc,a[101][101],n,m,i,j,t,c[2][10001],viz[101][101],v[10001][2],c2,k,l1,c1,l2,timp[101][101];
void coadas(){
int p,u,i;
p=1;u=0;
for(i=1;i<=t;i++)
{
u++;
c[0][u]=v[i][0];
c[1][u]=v[i][1];
viz[v[i][0]][v[i][1]]=1;
}
while(p<=u){
for(i=0;i<=3;i++) {
l=c[0][p]+dx[i];
cc=c[1][p]+dy[i];
if(a[l][cc]!=1) {
if(viz[l][cc]==0){
viz[l][cc]=viz[c[0][p]][c[1][p]];
u++;
c[0][u]=l;
c[1][u]=cc;
timp[l][cc]=timp[c[0][p]][c[1][p]]+1;
}
else
if(timp[c[0][p]][c[1][p]]+1==timp[l][cc])
viz[l][cc]=(viz[l][cc]+viz[c[0][p]][c[1][p]])%997;
}
}
p++;
}
}
void coada(int x, int y) {
int p,u,i,j;
p=u=1;
c[0][p]=x;
c[1][p]=y;
timp[x][y]=0;
viz[x][y]=1;
while(p<=u){
for(i=0;i<=3;i++) {
l=c[0][p]+dx[i];
cc=c[1][p]+dy[i];
if(a[l][cc]!=1) {
if(viz[l][cc]==0){
viz[l][cc]=viz[c[0][p]][c[1][p]];
u++;
c[0][u]=l;
c[1][u]=cc;
timp[l][cc]=timp[c[0][p]][c[1][p]]+1;
if(a[l][cc]==2){
timp[l2][c2]+=timp[l][cc];
viz[l2][c2]=(viz[l2][c2]+viz[l][cc])%997;
return;
}
}
else
if(timp[c[0][p]][c[1][p]]+1==timp[l][cc])
viz[l][cc]=(viz[l][cc]+viz[c[0][p]][c[1][p]])%997;
}
}
p++;
}
}
int main() {
fscanf(f,"%d%d%d%d%d%d%d",&n,&m,&k,&l1,&c1,&l2,&c2);
for(i=1;i<=k;i++) {
fscanf(f,"%d%d",&x,&y);
a[x][y]=2;
t++;
v[t][0]=x;
v[t][1]=y;
}
for(i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]=1;
for(i=1;i<=m+1;i++)
a[0][i]=a[n+1][i]=1;
coadas();
coada(l1,c1);
fprintf(g,"%d\n%d",timp[l2][c2],viz[l2][c2]);
return 0;
}