Const nmax=5001;
  type koor=record x,y:real; end;
  Var a:array [1..nmax+1] of koor;
      i1,i2,n,i,j:integer;
      l:longint;
      as,d1,al,alpha:real;
      max:integer;
      s3:real;
      maxs:real;
      f1,f:boolean;
    Function d(x,y,x1,y1:real):real;
     begin
       d:=sqrt(sqr(x-x1)+sqr(y-y1));
     end;
   Function less(a,b:real):boolean;
    begin
     If a<0 then begin If b>0 then begin less:=true;  exit; end
                                   else
                                    If abs(a)<=abs(b) then begin less:=false;  exit; end;
     If a>=0 then If b>0 then begin If a<=b then begin less:=true; exit; end; end
                         else less:=false; end;
    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;
 maxs:=0;
 For i1:=1 to n-1 do
  begin
     alpha:=1;
     f:=false;
     f1:=false;
     max:=0;
     alpha:=-10;
  for i2:=i1+1 to n do
   begin
     d1:=d(a[i1].x,a[i1].y,a[i2].x,a[i2].y);
     if not f1 then begin as:=(a[i1].y-a[i2].y)/d1; f1:=true; end;
     If l-d1<0 then continue;
     al:=(a[i1].y-a[i2].y)/d1;

 {    If not f then If al>as then begin alpha:=al; max:=i2; f:=true; continue; end;
  }
     If al>=as then begin
                    if al >= alpha then begin
                                            alpha:=al;
                                            max:=i2;
                                       end;
                   end;
   end;
     i2:=max;
     s3:=0;
     If max<>0 then begin
     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:=abs(s3)/2;
     If s3>maxs then begin maxs:=s3; If i2=n then break; end; end;
   end;
 Assign(output,'output.txt');
 Rewrite(output);
 Write(maxs);
 Close(output);
end.