/*
TASK:colxor
LANG:C++
*/

#include<stdio.h>
#include<set>


#define maxn 1024
#define PII pair <int, int>
#define x first
#define y second


using namespace std;
void input();
void solve();




int N, R;
int X[maxn], Y[maxn];
set <PII> d;
set <PII> POINTS;


int main()
{
input();
solve();


return 0;
}


void solve()
{
int i, j;
int RR = R*R;
int x, y;
PII u;


for(i = 0; i <= R; i++)
 for(j = 0; j <= R; j++)
  if(i*i + j*j < RR)
	{
	d.insert(make_pair(i, j));
	d.insert(make_pair(-i - 1, j));
	d.insert(make_pair(i, -j - 1));
	d.insert(make_pair(-i - 1, -j - 1));
	}
  else break;

set <PII> :: iterator it;
set <PII> :: iterator it1;

for(i = 1; i <= N; i++)
	{
	x = X[i];
	y = Y[i];
	for(it1 = d.begin(); it1 != d.end(); it1++)
		{
		u = make_pair(x + (*it1).x, y + (*it1).y);
		it = POINTS.find(u);
		if(it != POINTS.end()) POINTS.erase(u);
		else POINTS.insert(u);
		}
	}

printf("%d\n", POINTS.size());
}

	
   

void input()
{
scanf("%d%d", &N, &R);
for(int i = 1; i <= N; i++)
 scanf("%d%d", &X[i], &Y[i]);
}

