program _________e;
 var
     f:text;
     i,j,k,M,N,l:longint;
     x,y: array[-100..7000] of extended;
     ss,maxs,kk,bb,rr: extended;
     maxy,from,fr: longint;
     bad: boolean;

 function rast(x1,y1,x2,y2: extended): extended;
 begin
   rast:=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
 end;
 begin
   assign(f,'input.txt');
   reset(f);
   x[0]:=-10000;
   y[0]:=-10000;
   read(f,n,l);
   for i:=1 to n do
     read(f,x[i],y[i]);
   close(f);
   maxs:=0;
   i:=1;
   while i<=n-2 do begin
     maxy:=0;
     fr:=0;
     for j:=i+2 to n do begin                       // i+2  ???
       if (rast(x[i],y[i],x[j],y[j])<=l) then begin

         bad:=false;
         if (x[j]-x[i]=0) then continue;
         kk:=(y[j]-y[i])/(x[j]-x[i]);
         bb:=-x[i]*kk+y[i];

         ss:=0;

         if (y[maxy]<>-10000) and (y[maxy]<(kk*x[maxy]+bb)) then bad:=true;

         if not bad then begin

           for k:=i to j-1 do begin
             if (k>=i+1) then if y[k]<(kk*x[k]+bb) then begin if y[k]>y[maxy] then maxy:=k; bad:=true; break; end;
             ss:=ss+(x[k+1]-x[k])*(y[k]+y[k+1]);
           end;

           ss:=ss+(x[i]-x[j])*(y[j]+y[i]);
           ss:=abs(ss)/2;
         end;

         if not bad then begin
           if maxs<ss then maxs:=ss;
           fr:=j;

         end;


       end;
     end;
     if fr=0 then inc(i) else i:=fr;
   end;


   assign(f,'output.txt');
   rewrite(f);
   write(f,maxs);
   close(f);
 end.
