#include<cstdio>
#include<vector>
#include<set>
#include<algorithm>
#include<numeric>
#include<functional>
#include<utility>
#include<stack>
#include<tuple>
using namespace std;
const long long int big = 1152921504606846976;
//xi,yi,5に合うのは
//  xj+yj+5==xi+yi  &&  xi-yi+5>=xj-yj>=xi-yi-5であるもの
//xj+yj,xj-yj,xi+yi,xi-yiを受け取って、それができるのをキューに入れて保持
//チェビシェフ距離の考え方

vector<tuple< long long int, long long int>> Nxy;//元の配列
set<tuple<long long int, long long int, long long int>> xpyso;//x+yでソート,x-y,元の場所
set<tuple<long long int, long long int, long long int>> xmyso;//x-yでソート,x+y,元の場所
vector<tuple<long long int, long long int, long long int>> XpYv;
vector<tuple<long long int, long long int, long long int>> XmYv;
stack<long long int> costack;//調査すべきものを保持
int conif[100010] = { 0 };//そのコンパスはすでに刺されたか
int main(void) {
	long long int N, i, j, P, Q, a, b, x, y,low,upp,ter, condis, ans = 0;//はじめpとqを指す
	
	scanf("%lld %lld %lld", &N, &P, &Q);
	P--; Q--;//0-begin化
	costack.push(P); conif[P] = 1;
	costack.push(Q); conif[Q] = 1;
	for (i = 0; i<N; i++) {
		scanf("%lld %lld", &x, &y);
		Nxy.push_back(make_tuple(x, y));
		XpYv.push_back(make_tuple(x + y, x - y, i));
		XmYv.push_back(make_tuple(x - y, x + y, i));
		xpyso.insert(make_tuple(x + y, x - y, i));
		xmyso.insert(make_tuple(x - y, x + y, i));
	}
	x = get<0>(Nxy[P]) - get<0>(Nxy[Q]);
	y = get<1>(Nxy[P]) - get<1>(Nxy[Q]);
	if (x<0) { x = -x; }
	if (y<0) { y = -y; }
	condis = x + y;
	sort(XpYv.begin(), XpYv.end());
	sort(XmYv.begin(), XmYv.end());
	while (!costack.empty()) {

		ter = costack.top();
		costack.pop();
		x = get<0>(Nxy[ter]);
		y = get<1>(Nxy[ter]);
		auto low = xpyso.lower_bound(make_tuple(x + y + condis, x - y - condis, -99999));
		auto upp = xpyso.upper_bound(make_tuple(x + y + condis, x - y + condis - 1, 123456));
		for (auto it = low; it!=upp;) {//マンハッタン距離が合うものを探索
			j = get<2>(*it);//元の要素
			if (conif[j] == 1) { it++; continue; }
			conif[j] = 1;
			costack.push(j);
			it=xpyso.erase(it);
			xmyso.erase(make_tuple(get<0>(Nxy[j])-get<1>(Nxy[j]), get<0>(Nxy[j]) + get<1>(Nxy[j]),j));
		}

		low = xpyso.lower_bound(make_tuple(x + y - condis, x - y - condis+1, -99999));
		upp = xpyso.upper_bound(make_tuple(x + y - condis, x - y + condis , 123456));
		for (auto it = low; it != upp;) {//マンハッタン距離が合うものを探索
			j = get<2>(*it);//元の要素
			if (conif[j] == 1) { it++; continue; }
			conif[j] = 1;
			costack.push(j);
			it=xpyso.erase(it);
			xmyso.erase(make_tuple(get<0>(Nxy[j]) - get<1>(Nxy[j]), get<0>(Nxy[j]) + get<1>(Nxy[j]), j));
		}

		low = xmyso.lower_bound(make_tuple(x - y + condis, x + y - condis + 1, -99999));
		upp = xmyso.upper_bound(make_tuple(x - y + condis, x + y + condis, 123456));
		for (auto it = low; it != upp;) {//マンハッタン距離が合うものを探索
			j = get<2>(*it);//元の要素
			if (conif[j] == 1) { it++; continue; }
			conif[j] = 1;
			costack.push(j);
			xpyso.erase(make_tuple(get<0>(Nxy[j]) + get<1>(Nxy[j]), get<0>(Nxy[j]) - get<1>(Nxy[j]), j));
			it=xmyso.erase(it);
		}

		low = xmyso.lower_bound(make_tuple(x - y - condis, x + y - condis, -99999));
		upp = xmyso.upper_bound(make_tuple(x - y - condis, x + y + condis-1, 123456));
		for (auto it = low; it != upp;) {//マンハッタン距離が合うものを探索
			j = get<2>(*it);//元の要素
			if (conif[j] == 1) { it++; continue; }
			conif[j] = 1;
			costack.push(j);
			xpyso.erase(make_tuple(get<0>(Nxy[j]) + get<1>(Nxy[j]), get<0>(Nxy[j]) - get<1>(Nxy[j]), j));
			it=xmyso.erase(it);
		}
	}
	
	for (i = 0; i < N; i++) {
		if (conif[i] == 0) { continue; }
		ter = i;
		x = get<0>(Nxy[ter]);
		y = get<1>(Nxy[ter]);

		low = lower_bound(XpYv.begin(), XpYv.end(), make_tuple(x + y + condis, x - y - condis, -99999)) - XpYv.begin();
		upp = upper_bound(XpYv.begin(), XpYv.end(), make_tuple(x + y + condis, x - y + condis - 1, 123456)) - XpYv.begin();
		ans += upp - low;

		low = lower_bound(XpYv.begin(), XpYv.end(), make_tuple(x + y - condis, x - y - condis + 1, -99999)) - XpYv.begin();
		upp = upper_bound(XpYv.begin(), XpYv.end(), make_tuple(x + y - condis, x - y + condis, 123456)) - XpYv.begin();
		ans += upp - low;

		low = lower_bound(XmYv.begin(), XmYv.end(), make_tuple(x - y + condis, x + y - condis + 1, -99999)) - XmYv.begin();
		upp = upper_bound(XmYv.begin(), XmYv.end(), make_tuple(x - y + condis, x + y + condis, 123456)) - XmYv.begin();
		ans += upp - low;

		low = lower_bound(XmYv.begin(), XmYv.end(), make_tuple(x - y - condis, x + y - condis, -99999)) - XmYv.begin();
		upp = upper_bound(XmYv.begin(), XmYv.end(), make_tuple(x - y - condis, x + y + condis - 1, 123456)) - XmYv.begin();
		ans += upp - low;

	}
	ans /= 2;
	printf("%lld\n", ans);

	return 0;

}

Measured memory_bytes: 20176