#include #include #include #include //#define M_PI acos(-1.0) using namespace std; class Point{ public: double x,y; Point(double xx=0.0,double yy=0.0){ x=xx; y=yy; } Point operator-(Point p){ return Point(x-p.x,y-p.y); } Point& operator=(const Point p){ x=p.x; y=p.y; return *this; } double distance() { return sqrt(x*x+y*y); } double angle() { return atan2(y,x); } }; int main() { for (;;) { int n,i,j; cin>>n; if (!n) break; double xx[100],yy[100],rr[100]; bool enclosed[100]={false}; vector x,y,r; for (i=0;i>xx[i]>>yy[i]>>rr[i]; for (i=0;i=rr[j]+Point(xx[i]-xx[j],yy[i]-yy[j]).distance()) enclosed[j]=true; } for (i=0;i circles; vector points; circles.push_back(indexi); points.push_back(Point(x[indexi],miny)); int best; double alpha,betta,gamma,dist,cosine,minangle; Point besti,bestj,bestv,pi,pj,v,lastp; for (;;) { j=circles.back(); lastp=points.back(); minangle=2.0*M_PI; for (i=0;i2&&circles[0]==j&&circles[1]==best) break; points.push_back(bestj); points.push_back(besti); circles.push_back(best); } vector C; C.push_back(circles[0]); for (i=1;i