#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define pb push_back #define mp make_pair #define sz(a) ((int)(a.size())) #define all(a) a.begin(),a.end() #define eps 1e-11 #define REP(i,n) for(int (i)=0;i<(n);++i) #define REPS(i,n) for(int(i)=0;i<(n.size());++i) #define FOR(i,a,b) for(int(i)=(a);i<=(b);++i) #define FORD(i,a,b) for(int(i)=(a);i>=(b);--i) #define FORE(it,c) for(__typeof((c).begin()) it=(c).begin();it!=(c).end();++it) #define se second #define fi first #define SQR(a) ((a)*(a)) #define pii pair int N; double Dist(pii p1, pii p2) { return sqrt(SQR(p1.fi-p2.fi) + SQR(p1.se-p2.se)); } double CP( pii p1, pii p2, pii p3) { return (p2.fi-p1.fi)*(p3.se-p1.se)-(p3.fi-p1.fi)*(p2.se-p1.se); } inline vector > convex(vector > body) { if(sz(body)<4) return body; vector > Stack; sort( body.begin(), body.end()); Stack.pb(body[0]); Stack.pb(body[1]); FOR(i,2,sz(body)-1) { while(sz(Stack)>1 && CP(Stack[sz(Stack)-2].fi, Stack[sz(Stack)-1].fi, body[i].fi)>=0) Stack.pop_back(); Stack.pb(body[i]); } int zatial=sz(Stack); for(int i=sz(body)-2; i>=0; i--) { while(sz(Stack)>zatial && CP(Stack[sz(Stack)-2].fi, Stack[sz(Stack)-1].fi, body[i].fi)>=0) Stack.pop_back(); Stack.pb(body[i]); } Stack.pop_back(); return Stack; } int M,V[20],L[20],v,l,VV,minVV,x,y; double LL; vector > B,TEMP; int main() { while(scanf("%d",&N),N) { minVV=10000000; B.clear(); REP(i,N) { scanf("%d %d %d %d",&x,&y,&v,&l); B.pb(mp(mp(x,y),i)); V[i]=v; L[i]=l; } int mask=(1<