#include #include #include #include #include using namespace std; typedef pair point; double sq(double d){ return d*d; } double dist(double x1,double y1,double x2,double y2) { return sqrt(sq(x1-x2)+sq(y1-y2)); } int intersect(point &pp,point &qq, double &cx1,double &cy1, double &cx2,double &cy2) { double x1=pp.first,y1=pp.second,r1=1.0; double x2=qq.first,y2=qq.second,r2=1.0; double d=dist(x1,y1,x2,y2); double l,n,x,y,p,q; if ((d>r1+r2)||(d &dat,double x,double y) { int cnt=0; if (!(x>=0.0&&x<=10.0&&y>=0.0&&y<=10.0)) return 0; // cout< &dat,double y) { set xs; int ret=0; for (int i=0;i1) continue; double cod=sqrt(1-sq(fabs(dat[i].second-y))); xs.insert(dat[i].first+cod); xs.insert(dat[i].first-cod); } if (xs.size()==0) return 0; set::iterator p=xs.begin(); set::iterator q=xs.begin(); q++; while(q!=xs.end()){ double x=((*p)+(*q))/2; ret=max(ret,solve(dat,x,y)); p++;q++; } return ret; } int main(){ for (;;){ int n; cin>>n; if (n==0) break; vector dat; set cross; while(n--){ double x,y; cin>>x>>y; point p=make_pair(x,y); for (int i=0;i=2) cross.insert(make_pair(cx2,cy2)); if (num>=1) cross.insert(make_pair(cx1,cy1)); } dat.push_back(p); cross.insert(p); } int ans=0; set::iterator p=cross.begin(); while(p!=cross.end()){ ans=max(ans,solve(dat,p->first,p->second)); p++; } cout<