#include <bits/stdc++.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 d(point O, line l) {
    double a1 = l.point_A.x - l.point_B.x;
    double a2 = l.point_A.y - l.point_B.y;
    double b1 = O.y - l.point_A.y;
    double b2 = O.x - l.point_A.x;
    return abs(a1 * b1 - a2 * b2) / (sqrt(a1 * a1 + a2 * a2));
}
double getDistance(const Circle& circle, const line& l) {
    // 请在这里实现你的代码
    if (circle.r <= d(circle.O, l))
        return 0.0;
    else
        return 2.0 * sqrt(circle.r * circle.r - d(circle.O, l) * d(circle.O, l));
}
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;
}