Const nmax=5001;
  type koor=record x,y:real; end;
  Var a:array [1..nmax+1] of koor;
      i1,i2,n,i,j:integer;
      s,s1,l:longint;
      s3:real;
      max:real;
    Function d(x,y,x1,y1:real):real;
      Var r:real;
     begin
       r:=sqrt(sqr(x-x1)+sqr(y-y1));
       d:=r;
     end;

begin
 assign(input,'input.txt');
 Reset(input);
 Read(n,l);
 for i:=1 to n do
  read(a[i].x,a[i].y);
 max:=0;
 For i1:=1 to n-2 do
  for i2:=n downto i1+2 do
   begin
     If l-d(a[i1].x,a[i1].y,a[i2].x,a[i2].y)<0 then continue;
      s:=0;
      s1:=0;
     For i:=i1+1 to i2-1 do
      begin
      If ((a[i1].y-a[i2].y)*a[i].x) + ((a[i2].x-a[i1].x)*a[i].y) + a[i1].x*a[i2].y - a[i2].x*a[i1].y >=0 then
                 s:=s+1;
      If ((a[i1].y-a[i2].y)*a[i].x) + ((a[i2].x-a[i1].x)*a[i].y) + a[i1].x*a[i2].y - a[i2].x*a[i1].y <=0 then
                 s1:=s1+1;
      end;

     If (s<(i2-1-i1-1)+1)and(s1<(i2-1-i1-1)+1) then continue;
     s3:=0;
     For i:=i1 to i2-1 do
      begin s3:=s3+(a[i].x*a[i+1].y-a[i+1].x*a[i].y); end;
     s3:=s3+(a[i2].x*a[i1].y-a[i1].x*a[i2].y);
     s3:=s3/2;
     s3:=-1*s3;
     If s3>max then begin max:=s3; break; end;
   end;
 Assign(output,'output.txt');
 Rewrite(output);
 Write(max);
 Close(output);
end.