program wooden;

type point=record
   x,y:longint;
end;

var m,vysledok:array[0..1000]of point;
    s:array[0..65536,0..17]of longint;
    g,moc,x,y,v,l:array[0..1000]of longint;
    k,obal,i,j,len,value,w,minim,n:longint;
    meria:real;

function cross(a,b,o:point):longint;
var vys:longint;
begin
     vys:=(a.x-o.x) * (b.y-o.y)-(a.y-o.y)*(b.x-o.x);
     cross:=vys;
end;

procedure vymena1(a,b:longint);
var z:longint;
begin
     z:=m[a].x;
     m[a].x:=m[b].x;
     m[b].x:=z;
     z:=m[a].y;
     m[a].y:=m[b].y;
     m[b].y:=z;
end;

procedure qsort1(z,kon:longint);
var i,j,p:longint;
begin
     p:=m[(z+kon) div 2].x;
     i:=z-1;
     j:=kon+1;
     repeat
       repeat i:=i+1; until (m[i].x>=p);
       repeat j:=j-1; until (m[j].x<=p);
       if i<j then vymena1(i,j);
     until (i>=j);

     if i=j then
     begin
          i:=i+1;
          j:=j-1;
     end;

     if z<=j then qsort1(z,j);
     if kon>=i then qsort1(i,kon);
end;

procedure vymena2(a,b:longint);
var z:longint;
begin
     z:=m[a].y;
     m[a].y:=m[b].y;
     m[b].y:=z;
end;

procedure qsort2(z,k:longint);
var i,j,p:longint;
begin
     p:=m[(z+k) div 2].y;
     i:=z-1;
     j:=k+1;
     repeat
       repeat i:=i+1; until (m[i].y>=p);
       repeat j:=j-1; until (m[j].y<=p);
       if i<j then vymena2(i,j);
     until (i>=j);

     if i=j then
     begin
          i:=i+1;
          j:=j-1;
     end;

     if z<=j then qsort2(z,j);
     if k>=i then qsort2(i,k);
end;

procedure convexhull;
var n,kolko,i,t,min,ind:longint;
    zac,pocet,hod,x1,y1:array[0..100]of longint;
    oznac:array[0..20]of boolean;
begin
     n:=obal;
     k:=0;

     for i:=0 to n-1 do hod[i]:=x[i]*10001+y[i];
     for i:=0 to n-1 do oznac[i]:=false;
     for i:=0 to n-1 do
     begin
          min:=2000000000;
          for j:=0 to n-1 do if oznac[j]=false then
          if min>hod[j] then
          begin 
               ind:=j;
               min:=hod[j];
          end;
          oznac[ind]:=true;
          x1[i]:=x[ind];
          y1[i]:=y[ind]; 
     end; 
     for i:=0 to n-1 do x[i]:=x1[i];
     for i:=0 to n-1 do y[i]:=y1[i];
     for i:=0 to n-1 do
     begin
          while (k>=2) and (cross(vysledok[k-2], vysledok[k-1], m[i]) <= 0) do k:=k-1;
          vysledok[k]:=m[i];
          k:=k+1;
     end;

     t:=k+1;
     for i:=n-2 downto 0 do
     begin
          while (k>=t) and (cross(vysledok[k-2], vysledok[k-1], m[i]) <=0 ) do k:=k-1;
          vysledok[k]:=m[i];
          k:=k+1;
     end;
end;

begin
     moc[0]:=1;
     for i:=1 to 16 do moc[i]:=moc[i-1]*2;
     for i:=1 to 16 do g[i]:=0;
     g[1]:=-1;
     for i:=0 to 65535 do
     begin
          g[1]:=g[1]+1;
          j:=1;
          while g[j]=2 do
          begin
               g[j]:=0;
               g[j+1]:=g[j+1]+1;
               j:=j+1;
          end;
          for j:=1 to 16 do s[i,j]:=g[j];
     end;
     read(n);
     while n>0 do
     begin
          for i:=1 to n do read(x[i],y[i],v[i],l[i]);
          minim:=10000000; 
          for i:=0 to moc[n]-1 do
          begin
               value:=0;
               obal:=0;           
               len:=0;
               for j:=1 to n do if s[i,j]=1 then
               begin
                    m[obal].x:=x[j];
                    m[obal].y:=y[j];
                    obal:=obal+1;
               end
               else
               begin
                    value:=value+v[j];
                    len:=len+l[j]; 
               end;
               convexhull;
               meria:=0.0;
               for w:=0 to k-1 do meria:=meria+sqrt(sqr(vysledok[w].x-vysledok[w+1].x)+sqr(vysledok[w].y-vysledok[w+1].y));
               if obal<=1 then meria:=0.0;
               if meria<=len then if minim>value then minim:=value;              
          end; 
          writeln('The lost value is ',minim,'.');
          read(n);
     end;
end.
