//Решение задачи "Муравей на Кубе"
var
   a, x, y, z, l_min : extended;
begin
   assign(input,  'cube.in'); reset(input);
   assign(output,'cube.out'); rewrite(output);
   readln(a);
   read(x, y, z);
   l_min:=-1;
   if z=0 then l_min:=sqrt(x*x+y*y)
   else
      begin
      if y=0 then l_min:=sqrt(x*x+z*z)
      else
         begin
         if x=0 then l_min:=sqrt(z*z+y*y)
         else
            begin
            if z=a then   begin
                          if x>=y
                          then l_min:=sqrt(x*x+(a+y)*(a+y))
                          else l_min:=sqrt((a+x)*(a+x)+y*y);
                          end
            else
               begin
               if y=a then   begin
                             if x>=z
                             then l_min:=sqrt(x*x+(a+z)*(a+z))
                             else l_min:=sqrt((a+x)*(a+x)+z*z);
                             end
               else
                  if x=a then   begin
                                if y>=z
                                then l_min:=sqrt(y*y+(a+z)*(a+z))
                                else l_min:=sqrt((a+y)*(a+y)+z*z);
                                end
               end
            end
         end
      end;
   writeln(l_min:0:4);
   close(output);
end.