#include <bits/stdc++.h>
#include <math.h>
using namespace std;

struct point{
    double x,y;
    point(double A,double B){
        x=A,y=B;
    }
    point() = default;
};

struct line{
    point point_A,point_B;
    line(point A,point B){
        point_A = A,point_B = B;
    }
    line() = default;
};

struct Circle{
    point O;
    int r;
    Circle(point A,int B){
        O=A,r=B;
    }
    Circle() = default;
};

double GetDistance(point P, line L){
    double B=L.point_A.x-L.point_B.x,A=L.point_B.y-L.point_A.y,C=L.point_A.y*L.point_B.x-L.point_A.x*L.point_B.y;
    return fabs(A*P.x+B*P.y+C)/sqrt(A*A+B*B);
    }// TODO: 计算点P到直线L的距离

double getDistance(const Circle& circle, const line& l) {
    double d=GetDistance(circle.O, l);
        if (d>circle.r+0.000000000001) {
    return 0.000000;
    }
    return sqrt((circle.r*circle.r)-(d*d))*2;// 请在这里实现你的代码
}





















































































































































































int main() {
    double ox, oy, r;
    double x1, y1, x2, y2;
    
    cin >> ox >> oy >> r;
    cin >> x1 >> y1 >> x2 >> y2;
    
    point center(ox, oy);
    Circle circle(center, (int)r);
    
    point p1(x1, y1);
    point p2(x2, y2);
    line l(p1, p2);
    
    double result = getDistance(circle, l);
    cout << fixed << setprecision(6) << result << endl;
    
    return 0;
}