#define _CRT_SECURE_NO_WARNINGS

#define N (1<<17)
#define MODULO (1000000007)

#include <cstdio>
#include <iostream>
#include <fstream>
#include <sstream>
#include <queue>
#include <map>
#include <set>
#include <deque>
#include <vector>
#include <stack>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string>
using namespace std;

long long n, a, b;
pair<long long, long long> pos[N], der1[N], der2[N];
pair<long long, long long> cer1[N], cer2[N];
vector<long long> v[N];
map<pair<long long, long long>, long long> mp;
long long dist;
long long occ[N];
long long vis[N];
long long cnt;
map<long long, vector<long long> > mp1, mp2;
long long Ans;

void dfs(long long xx)
{
	vis[xx] = cnt;
	for (long long i = 0;i < v[xx].size();i++)
	{
		long long cur = v[xx][i];
		if (!vis[cur])
		{
			dfs(cur);
		}
	}
}

inline long long GetPart(long long L, long long R, vector<long long> &V)
{
	return lower_bound(V.begin(), V.end(), R + 1) -
		lower_bound(V.begin(), V.end(), L);
}

int main()
{
	scanf("%lld%lld%lld", &n, &a, &b);
	a--, b--;
	for (long long i = 0;i < n;i++)
	{
		scanf("%lld%lld", &pos[i].first, &pos[i].second);
		mp[pos[i]] = i;
		der1[i] = make_pair(pos[i].first + pos[i].second,
			pos[i].first - pos[i].second);
		der2[i] = make_pair(pos[i].first - pos[i].second,
			pos[i].first + pos[i].second);
	}
	dist = abs(pos[a].first - pos[b].first) +
		abs(pos[a].second - pos[b].second);
	sort(der1, der1 + n);
	sort(der2, der2 + n);
	memset(occ, 0, sizeof(occ));
	for (long long i = 0;i < n;i++)
	{
		/*
		pair<long long, long long> cps1 = make_pair(
			(long long)((long long)((long long)der1[i].first +
			(long long)der1[i].second) >> 1),
				(long long)((long long)((long long)der1[i].first -
			(long long)der1[i].second) >> 1));
		long long cid1 = mp[cps1];
		*/
		long long nps1 = lower_bound(der1, der1 + n,
			make_pair(der1[i].first + dist, der1[i].second - dist)) - der1;
		long long nps2 = lower_bound(der1, der1 + n,
			make_pair(der1[i].first + dist, der1[i].second + dist)) - der1;
		if (der1[nps1] < make_pair(der1[i].first + dist, der1[i].second - dist))
		{
			nps1++;
		}
		if (der1[nps2] > make_pair(der1[i].first + dist, der1[i].second + dist) ||
			nps2 == n)
		{
			nps2--;
		}
		//__debugbreak();
		if (nps1 > nps2)
		{
			continue;
		}
		occ[nps1]++;
		occ[nps2]--;
		pair<long long, long long> cps1 = make_pair(
			(long long)((long long)((long long)der1[i].first +
			(long long)der1[i].second) >> 1),
				(long long)((long long)((long long)der1[i].first -
			(long long)der1[i].second) >> 1));
		long long cid1 = mp[cps1];
		pair<long long, long long> cps2 = make_pair(
			(long long)((long long)((long long)der1[nps1].first +
			(long long)der1[nps1].second) >> 1),
				(long long)((long long)((long long)der1[nps1].first -
			(long long)der1[nps1].second) >> 1));
		long long cid2 = mp[cps2];
		v[cid1].push_back(cid2);
		v[cid2].push_back(cid1);
		//__debugbreak();
	}
	long long cur = 0;
	for (long long i = 0;i < n - 1;i++)
	{
		cur += occ[i];
		if (cur > 0)
		{
			pair<long long, long long> cps1 = make_pair(
				(long long)((long long)((long long)der1[i].first +
				(long long)der1[i].second) >> 1),
					(long long)((long long)((long long)der1[i].first -
				(long long)der1[i].second) >> 1));
			long long cid1 = mp[cps1];
			pair<long long, long long> cps2 = make_pair(
				(long long)((long long)((long long)der1[i + 1].first +
				(long long)der1[i + 1].second) >> 1),
					(long long)((long long)((long long)der1[i + 1].first -
				(long long)der1[i + 1].second) >> 1));
			long long cid2 = mp[cps2];
			v[cid1].push_back(cid2);
			v[cid2].push_back(cid1);
		}
	}
	/*
	for (long long i = 0;i < n - 1;i++)
	{
		pair<long long, long long> cps1 = make_pair(
			(long long)((long long)((long long)der1[i].first +
			(long long)der1[i].second) >> 1),
				(long long)((long long)((long long)der1[i].first -
			(long long)der1[i].second) >> 1));
		long long cid1 = mp[cps1];
		pair<long long, long long> cps2 = make_pair(
			(long long)((long long)((long long)der1[i + 1].first +
			(long long)der1[i + 1].second) >> 1),
				(long long)((long long)((long long)der1[i + 1].first -
			(long long)der1[i + 1].second) >> 1));
		long long cid2 = mp[cps2];

	}
	*/
	memset(occ, 0, sizeof(occ));
	for (long long i = 0;i < n;i++)
	{
		/*
		pair<long long, long long> cps1 = make_pair(
			(long long)((long long)((long long)der2[i].first +
			(long long)der2[i].second) >> 1),
				(long long)((long long)((long long)der2[i].first -
			(long long)der2[i].second) >> 1));
		long long cid1 = mp[cps1];
		*/
		long long nps1 = lower_bound(der2, der2 + n,
			make_pair(der2[i].first + dist, der2[i].second - dist)) - der2;
		long long nps2 = lower_bound(der2, der2 + n,
			make_pair(der2[i].first + dist, der2[i].second + dist)) - der2;
		if (der2[nps1] < make_pair(der2[i].first + dist, der2[i].second - dist))
		{
			nps1++;
		}
		if (der2[nps2] > make_pair(der2[i].first + dist, der2[i].second + dist) ||
			nps2 == n)
		{
			nps2--;
		}
		//__debugbreak();
		if (nps1 > nps2)
		{
			continue;
		}
		occ[nps1]++;
		occ[nps2]--;
		pair<long long, long long> cps1 = make_pair(
			(long long)((long long)((long long)der2[i].first +
			(long long)der2[i].second) >> 1),
				(long long)((long long)((long long)der2[i].second -
			(long long)der2[i].first) >> 1));
		long long cid1 = mp[cps1];
		pair<long long, long long> cps2 = make_pair(
			(long long)((long long)((long long)der2[nps1].first +
			(long long)der2[nps1].second) >> 1),
				(long long)((long long)((long long)der2[nps1].second -
			(long long)der2[nps1].first) >> 1));
		long long cid2 = mp[cps2];
		v[cid1].push_back(cid2);
		v[cid2].push_back(cid1);
		//__debugbreak();
	}
	cur = 0;
	for (long long i = 0;i < n - 1;i++)
	{
		cur += occ[i];
		if (cur > 0)
		{
			pair<long long, long long> cps1 = make_pair(
				(long long)((long long)((long long)der2[i].second +
				(long long)der2[i].first) >> 1),
					(long long)((long long)((long long)der2[i].second -
				(long long)der2[i].first) >> 1));
			long long cid1 = mp[cps1];
			pair<long long, long long> cps2 = make_pair(
				(long long)((long long)((long long)der2[i + 1].second +
				(long long)der2[i + 1].first) >> 1),
					(long long)((long long)((long long)der2[i + 1].second -
				(long long)der2[i + 1].first) >> 1));
			long long cid2 = mp[cps2];
			v[cid1].push_back(cid2);
			v[cid2].push_back(cid1);
		}
	}
	for (long long i = 0;i < n;i++)
	{
		set<long long> S;
		for (long long j = 0;j < v[i].size();j++)
		{
			S.insert(v[i][j]);
		}
		v[i].clear();
		for (set<long long>::iterator it = S.begin();it != S.end();it++)
		{
			v[i].push_back(*it);
		}
	}
	for (long long i = 0;i < n;i++)
	{
		if (!vis[i])
		{
			cnt++;
			dfs(i);
		}
	}
	long long ccar = vis[a];
	vector<long long> vv;
	for (long long i = 0;i < n;i++)
	{
		if (vis[i] == ccar)
		{
			vv.push_back(i);
		}
	}
	/*
	for (long long i = 0;i < vv.size();i++)
	{
		printf("%d ", vv[i]);
	}
	printf("\n");
	*/
	long long ttt = vv.size();
	for (long long i = 0;i < ttt;i++)
	{
		mp1[pos[vv[i]].first + pos[vv[i]].second].push_back(pos[vv[i]].first);
		mp2[pos[vv[i]].first - pos[vv[i]].second].push_back(pos[vv[i]].first);
	}
	for (map<long long, vector<long long> >::iterator it = mp1.begin();
		it != mp1.end();it++)
	{
		sort(it->second.begin(), it->second.end());
	}
	for (map<long long, vector<long long> >::iterator it = mp2.begin();
		it != mp2.end();it++)
	{
		sort(it->second.begin(), it->second.end());
	}
	for (long long i = 0;i < ttt;i++)
	{
		long long tmpa = 0;
		tmpa += GetPart(pos[vv[i]].first, pos[vv[i]].first + dist,
			mp1[pos[vv[i]].first + pos[vv[i]].second + dist]);
		tmpa += GetPart(pos[vv[i]].first - dist, pos[vv[i]].first,
			mp1[pos[vv[i]].first + pos[vv[i]].second - dist]);
		tmpa += GetPart(pos[vv[i]].first - dist, pos[vv[i]].first,
			mp2[pos[vv[i]].first - pos[vv[i]].second - dist]);
		tmpa += GetPart(pos[vv[i]].first, pos[vv[i]].first + dist,
			mp2[pos[vv[i]].first - pos[vv[i]].second + dist]);
		tmpa -= (long long)(mp.find(make_pair(pos[vv[i]].first,
			pos[vv[i]].second + dist)) != mp.end());
		tmpa -= (long long)(mp.find(make_pair(pos[vv[i]].first,
			pos[vv[i]].second - dist)) != mp.end());
		tmpa -= (long long)(mp.find(make_pair(pos[vv[i]].first + dist,
			pos[vv[i]].second)) != mp.end());
		tmpa -= (long long)(mp.find(make_pair(pos[vv[i]].first - dist,
			pos[vv[i]].second)) != mp.end());
		Ans += tmpa;
	}
	printf("%lld\n", Ans >> 1);
	//system("pause");
	return 0;
}



Measured memory_bytes: 60536