#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
int n,a,b;
ll x[N],y[N],X[N],Y[N],ax[N],ay[N],dis;
set<pair<ll,int> > Sx[N],Sy[N];
set<pair<ll,ll> > S;
vector<ll> vx[N],vy[N];
queue<int> Q;
int q[N],size;
void push(int i){
	static bool inq[N];
	if (inq[i]) return;
	inq[i]=1;
	Q.push(i);
	q[++size]=i;
}
ll ans=0;
void calc(vector<ll> &v,ll l,ll r){
	/*for (int i=0;i<v.size();i++) printf("%lld ",v[i]);puts("");
	printf("query(%lld,%lld)\n",l,r);*/
	int cnt=upper_bound(v.begin(),v.end(),r)-lower_bound(v.begin(),v.end(),l);
	//printf("ans=%d\n",cnt);
	ans+=cnt;
}
void work(set<pair<ll,int> > &S,ll l,ll r){
	S.insert(make_pair(l,0));
	S.insert(make_pair(r+1,0));
	set<pair<ll,int> >::iterator i=S.find(make_pair(l,0));
	set<pair<ll,int> >::iterator R=S.find(make_pair(r+1,0));
	for (++i;i!=R;++i) push(i->second);
	S.erase(make_pair(l,0));
	S.erase(make_pair(r+1,0));
}
void release(int i){
	//printf("release %d\n",i);
	ll lx=x[i]+y[i]-dis,rx=x[i]+y[i]+dis;
	ll ly=x[i]-y[i]-dis,ry=x[i]-y[i]+dis;
	size=0;
	int id=lower_bound(ax+1,ax+n+1,lx)-ax;
	if (ax[id]==lx) calc(vx[id],ly,ry),work(Sx[id],ly,ry);
		id=lower_bound(ax+1,ax+n+1,rx)-ax;
	if (ax[id]==rx) calc(vx[id],ly,ry),work(Sx[id],ly,ry);
		id=lower_bound(ay+1,ay+n+1,ly)-ay;
	if (ay[id]==ly) calc(vy[id],lx,rx),work(Sy[id],lx,rx);
		id=lower_bound(ay+1,ay+n+1,ry)-ay;
	if (ay[id]==ry) calc(vy[id],lx,rx),work(Sy[id],lx,rx);
	if (S.count(make_pair(lx,ly))) ans--;
	if (S.count(make_pair(lx,ry))) ans--;
	if (S.count(make_pair(rx,ly))) ans--;
	if (S.count(make_pair(rx,ry))) ans--;
	for (int i=1;i<=size;i++){
		int v=q[i];
		Sx[X[v]].erase(make_pair(x[v]-y[v],v));
		Sy[Y[v]].erase(make_pair(x[v]+y[v],v));
		//printf("find %d\n",v);
	}
}
int main()
{
	scanf("%d%d%d",&n,&a,&b);
	for (int i=1;i<=n;i++){
		scanf("%lld%lld",&x[i],&y[i]);
		ax[i]=X[i]=x[i]+y[i];
		ay[i]=Y[i]=x[i]-y[i];
		S.insert(make_pair(X[i],Y[i]));
	}
	sort(ax+1,ax+n+1);
	sort(ay+1,ay+n+1);
	for (int i=1;i<=n;i++){
		X[i]=lower_bound(ax+1,ax+n+1,X[i])-ax;
		Y[i]=lower_bound(ay+1,ay+n+1,Y[i])-ay;
		Sx[X[i]].insert(make_pair(x[i]-y[i],i));
		Sy[Y[i]].insert(make_pair(x[i]+y[i],i));
		vx[X[i]].push_back(x[i]-y[i]);
		vy[Y[i]].push_back(x[i]+y[i]);
	}
	for (int i=1;i<=n;i++){
		vx[i].push_back(-1e16);
		vx[i].push_back(1e16);
		vy[i].push_back(-1e16);
		vy[i].push_back(1e16);
	}
	for (int i=1;i<=n;i++){
		sort(vx[i].begin(),vx[i].end());
		sort(vy[i].begin(),vy[i].end());
	}
	push(a);push(b);
	dis=abs(x[a]-x[b])+abs(y[a]-y[b]);
	while (!Q.empty()) release(Q.front()),Q.pop();
	printf("%lld\n",ans/2);
	return 0;
}