{
TASK:colxor
LANG:pascal
}
type points=Record
       x,y:Longint;
     End;
var a:Array [1..1000] of points;
    n,r,k,ts,s,i,j,ans,minx,maxx,miny,maxy,r2:Longint;
function dist(x1,y1,x2,y2:Double):Double;
Begin
  dist:=sqr(x1-x2)+sqr(y1-y2);
End;
Begin
  ans:=0;
  minx:= 10000;
  miny:= 10000;
  maxx:=-10000;
  maxy:=-10000;
  ReadLn(n,r);
  r2:=sqr(r);
 For i:=1 to n do
 Begin
   ReadLn(a[i].x, a[i].y);
  If a[i].x-r-1<minx then minx:=a[i].x-r-1;
  If a[i].y-r-1<miny then miny:=a[i].y-r-1;
  If a[i].x+r+1>maxx then maxx:=a[i].x+r+1;
  If a[i].y+r+1>maxy then maxy:=a[i].y+r+1;
 End;
 For i:=minx to maxx do
  For j:=miny to maxy do
  Begin
    s:=0;
   For k:=1 to n do
    Begin
      ts:=0;
     If dist(i+0.5,j+0.5,a[k].x+0.5,a[k].y+0.5)<r2 then ts:=1;
     If dist(i+0.5,j-0.5,a[k].x+0.5,a[k].y+0.5)<r2 then ts:=1;
     If dist(i-0.5,j-0.5,a[k].x+0.5,a[k].y+0.5)<r2 then ts:=1;
     If dist(i-0.5,j+0.5,a[k].x+0.5,a[k].y+0.5)<r2 then ts:=1;
      If ts=1 then s:=s xor ts;
    End;
    ans:=ans+s;
  End;
  WriteLn(ans);
End.
