program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type t1=record
        x:integer;
        y:integer;
        end;
     t2=array[1..5000] of t1;
var dPoint:t2;
    N,L,i:integer;
    FF:text;

procedure GetData;
  var i:integer;
      F:Text;
begin
  assign(F,'input.txt');
  reset(f);
  read(f,N);
  read(f,L);
  for i:=1 to N do begin
    read(f,dPoint[i].x);
    read(f,dPoint[i].y);
    end;
  close(f);
end;
function FindK(n1,n2:integer):double;
  var k:double;
begin
  if (dPoint[n2].x-dPoint[n1].x)=0 then result:=1000000000;
  result:=(dPoint[n2].y-dPoint[n1].y)/(dPoint[n2].x-dPoint[n1].x);
end;

function Fuck_L(n1,n2:integer):boolean;
begin
  if (trunc(sqr(dPoint[n2].x-dPoint[n1].x)+
      sqr(dPoint[n2].y-dPoint[n1].y)))>L then
      result:=False
    else result:=true;
end;

function FindN(tn:integer):integer;
var K:double;
    HlpN,ii:integer;
begin
  if (Fuck_L(tn,N)) then begin
    K:=FindK(tn,N);
    HlpN:=N;
    end
   else begin
    HlpN:=0;
    K:=1000000000;
    end;
  for ii:=N-1 downto tn+1 do begin
    if (K>FindK(tn,ii)) then begin
      K:=FindK(tn,ii);
      HlpN:=ii;
      if (Fuck_L(tn,ii)) then HlpN:=0;
      end;
    end;
  if HlpN=tn+1 then Result:=0 else Result:=HlpN;
end;

function Sqwere(n1,n2:integer):double;
  var i:integer;
      sq,k:double;
begin
  sq:=0;
  if (dPoint[n2].x-dPoint[n1].x)=0 then
  k:=(dPoint[n2].y-dPoint[n1].y)/0.000000001
  else
  k:=(dPoint[n2].y-dPoint[n1].y)/(dPoint[n2].x-dPoint[n1].x);
  for i:=n1+1 to n2 do begin
    sq:=sq+((dPoint[i-1].y-k*(dPoint[i-1].x-dPoint[n1].x)+dPoint[n1].y)+
            (dPoint[i].y-k*(dPoint[i].x-dPoint[n1].x)+dPoint[n1].y))
           *(dPoint[i].x-dPoint[i-1].x);
    end;
    sq:=sq/2;
    result:=sq;
end;

function proces:double;
  var i:integer;
      S1,S2:double;
begin
  S1:=Sqwere(1,FindN(1));
  for i:=2 to N-2 do begin
    S2:=Sqwere(i,FindN(i));
    if S1<S2 then S1:=S2;
    end;
  result:=S1;
end;

begin
  GetData;
  L:=sqr(L);
//  write(N:5);
//  writeln(L:6);
//  for i:=1 to N do begin
//    Write(dPoint[i].x:4);
//    Writeln(dPoint[i].y:4);
//    end;
//  writeln(findN(1):4);
//  writeln(Proces:10:5);
//  proces;
  assign(FF,'output.txt');
  rewrite(FF);
  write(FF,Proces:10:10);
//  write(Proces:10:10);
  close(ff);
//  readln;
end.
