#include using namespace std; using ll=long long; using ld=double; #define FOR(i,a,b) for(ll i=a;i<(ll)b;++i) #define F(n) FOR(i,0,n) #define FF(n) FOR(j,0,n) #define aa first #define bb second #define PB push_back #define EQ(a,b) (fabs(a-b)<=(fabs(a+b)*EPS)) #define ZERO (1e-10) 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;ld 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; ll ax, ay, bx, by; cin >> ax >> ay >> bx >> by; cout << fixed << setprecision(4); ll left = min(ax, bx); ll right = max(ax, bx); ll top = min(ay, by); ll bot = max(ay, by); CC cir; cir.c.x = x; cir.c.y = y; cir.r = r; cout << rci(left, top, right, bot, cir) << endl; return 0; }