#include<bits/stdc++.h>
#define maxn 100100
using namespace std;
typedef pair<int,int> par;
map<int,set<par> >a,b;
map<int,vector<par> >vx,vy;
int x[maxn],q[maxn],l,r,y[maxn],n,A,B;
long long ans;
void del(int x,int y,int bh){
	a[x].erase(par(y,bh)),b[y].erase(par(x,bh));
}
void insx(int p,int l,int r){
	ans+=upper_bound(vx[p].begin(),vx[p].end(),par(r,n+1))-lower_bound(vx[p].begin(),vx[p].end(),par(l,0));
	set<par>::iterator bg=a[p].lower_bound(par(l,0));
	set<par>::iterator ed=a[p].upper_bound(par(r,n+1));
//	printf("[%d,%d,(%d,%d)]",bg->second,ed->second,l,r);
	while(bg!=ed){
//		printf("[ok,%d]",r);
		set<par>::iterator it=bg;it++;
		q[::r++]=bg->second,del(p,bg->first,bg->second),bg=it;
	}
}

void insy(int p,int l,int r){
	ans+=upper_bound(vy[p].begin(),vy[p].end(),par(r,n+1))-lower_bound(vy[p].begin(),vy[p].end(),par(l,0));
	set<par>::iterator bg=b[p].lower_bound(par(l,0));
	set<par>::iterator ed=b[p].upper_bound(par(r,n+1));
	while(bg!=ed){
		set<par>::iterator it=bg;it++;
		q[::r++]=bg->second,del(bg->first,p,bg->second),bg=it;
	}
}
int main(){
	scanf("%d%d%d",&n,&A,&B);
	for(int i=1;i<=n;++i){
		scanf("%d%d",&x[i],&y[i]);
		a[x[i]+y[i]].insert(par(x[i]-y[i],i));
		b[x[i]-y[i]].insert(par(x[i]+y[i],i));
	}
	for(map<int,set<par> >::iterator mit=a.begin();mit!=a.end();mit++)
		for(set<par>::iterator it=mit->second.begin();it!=mit->second.end();it++)
			vx[mit->first].push_back(*it);
	for(map<int,set<par> >::iterator mit=b.begin();mit!=b.end();mit++)
		for(set<par>::iterator it=mit->second.begin();it!=mit->second.end();it++)
			vy[mit->first].push_back(*it);
	q[r++]=A,del(x[A]+y[A],x[A]-y[A],A);
	int d=abs(x[A]-x[B])+abs(y[A]-y[B]);
	while(l<r){
		int nw=q[l++];
//		printf("[(%d,%d)]\n",x[nw],y[nw]);
		insx(x[nw]+y[nw]+d,x[nw]-y[nw]-(d-1),x[nw]-y[nw]+(d-1));
		insx(x[nw]+y[nw]-d,x[nw]-y[nw]-(d-1),x[nw]-y[nw]+(d-1));
		insy(x[nw]-y[nw]+d,x[nw]+y[nw]-d,x[nw]+y[nw]+d);
		insy(x[nw]-y[nw]-d,x[nw]+y[nw]-d,x[nw]+y[nw]+d);
//		printf("{%d,%d}",l,r);
	}
	printf("%lld",ans/2);
}