#include using namespace std; using ll=long long; using ld=double; using vll=vector; #define FOR(i,a,b) for(ll i=a;i<(ll)b;++i) #define ROF(i,a,b) for(ll i=a;i>=(ll)b;--i) #define PB push_back #define ZERO 1e-9 struct PT{ ld x,y; }pt[20]; PT vec(PT a,PT b){return {a.x-b.x,a.y-b.y};} struct LN{PT s,e;}ln[4]; struct CC{PT c;ll r;}C; int P; bool cn[20]; void fd(LN l,int f){ PT T; ld t; switch(f){ case 0: if(fabs(C.c.y-l.s.y)>C.r)return; t=sqrt(fabs(C.r*C.r-pow(C.c.y-l.s.y,2))); T={C.c.x-t,l.s.y}; if(T.x>l.s.x&&T.xl.s.x&&T.xC.r)return; t=sqrt(fabs(C.r*C.r-pow(C.c.x-l.s.x,2))); T={l.s.x,C.c.y+t}; if(T.yl.e.y)pt[P++]=T; T.y=C.c.y-t; if(T.yl.e.y)pt[P++]=T; break; case 2: if(fabs(C.c.y-l.s.y)>C.r)return; t=sqrt(fabs(C.r*C.r-pow(C.c.y-l.s.y,2))); T={C.c.x+t,l.s.y}; if(T.xl.e.x)pt[P++]=T; T.x=C.c.x-t; if(T.xl.e.x)pt[P++]=T; break; case 3: if(fabs(C.c.x-l.s.x)>C.r)return; t=sqrt(fabs(C.r*C.r-pow(C.c.x-l.s.x,2))); T={l.s.x,0}; if(l.s.yl.s.y&&T.yl.s.y&&T.yC.r+ZERO;} ld Xp(PT a,PT b){return a.x*b.y-a.y*b.x;} ld Dp(PT a,PT b){return a.x*b.x+a.y*b.y;} ld tri(PT a,PT b){return Xp(vec(a,C.c),vec(b,C.c))/2;} ld sec(PT a,PT b){ ld da=dst2(a,C.c),db=dst2(b,C.c),cj=Xp(vec(a,C.c),vec(b,C.c)), dj=Dp(vec(a,C.c),vec(b,C.c)),D=cj/sqrt(da*db),A=asin(D); if(dj<-ZERO)A=A>0?M_PI-A:-M_PI-A; return A*C.r*C.r/2; } ld rci(ld lx,ld ly,ld rx,ld ry,CC& c){ C=c; pre(lx,ly,rx,ry); if(C.r>x>>y>>r>>ax>>ay>>bx>>by; CC c={{x,y},r}; cout<