#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
#include <queue>
#include <unordered_map>
#define int long long
#define INF 1e+9
using namespace std; //575

typedef pair<int,int> P;

int n,a,b,x[100000],y[100000],d,ans = 0;
bool used[100000];
unordered_map<int,vector<P> > es,fs;
unordered_map<int,map<int,int> > emp,fmp;

signed main(){
	cin >> n >> a >> b; a--;b--;
	for(int i = 0;i < n;i++){
		cin >> x[i] >> y[i];
		int e = x[i] + y[i],f = x[i] - y[i];
		es[e].push_back(P(f,i));
		fs[f].push_back(P(e,i));
		if(i != a && i != b){
			emp[e][f] = i;
			fmp[f][e] = i;
		}
	}
	for(auto it = es.begin();it != es.end();it++) sort(it->second.begin(),it->second.end());
	for(auto it = fs.begin();it != fs.end();it++) sort(it->second.begin(),it->second.end());
	d = abs(x[a] - x[b]) + abs(y[a] - y[b]);
	queue<int> que;
	que.push(a);
	que.push(b);
	while(!que.empty()){
		int v = que.front();que.pop();
		used[v] = true;
		int e = x[v] + y[v],f = x[v] - y[v];
		vector<int> vec;
		for(auto it = emp[e - d].lower_bound(f - d);it != emp[e - d].end() && it->first < f + d;it++) vec.push_back(it->second);
		for(auto it = emp[e + d].lower_bound(f - d);it != emp[e + d].end() && it->first < f + d;it++) vec.push_back(it->second);
		for(auto it = fmp[f - d].lower_bound(e - d + 1);it != fmp[f - d].end() && it->first < e + d;it++) vec.push_back(it->second);
		for(auto it = fmp[f + d].lower_bound(e - d);it != fmp[f + d].end() && it->first <= e + d;it++) vec.push_back(it->second);
		for(int p : vec){
			que.push(p);
			e = x[p] + y[p];
			f = x[p] - y[p];
			emp[e].erase(emp[e].find(f));
			fmp[f].erase(fmp[f].find(e));
		}
	}
	for(int i = 0;i < n;i++){
		if(!used[i]) continue;
		int e = x[i] + y[i],f = x[i] - y[i];
		ans += upper_bound(es[e + d].begin(),es[e + d].end(),P(f + d,-1)) - lower_bound(es[e + d].begin(),es[e + d].end(),P(f - d,-1));
		ans += upper_bound(es[e - d].begin(),es[e - d].end(),P(f + d,-1)) - lower_bound(es[e - d].begin(),es[e - d].end(),P(f - d,-1));
		ans += upper_bound(fs[f + d].begin(),fs[f + d].end(),P(e + d,-1)) - lower_bound(fs[f + d].begin(),fs[f + d].end(),P(e - d,-1));
		ans += upper_bound(fs[f - d].begin(),fs[f - d].end(),P(e + d,-1)) - lower_bound(fs[f - d].begin(),fs[f - d].end(),P(e - d,-1));
	}
	cout << ans / 2 << endl;
	return 0;
}