#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
if (!(cin >> N)) return 0;
vector<pair<double,double>> pts(N);
for (int i = 0; i < N; ++i) cin >> pts[i].first >> pts[i].second;
double xA, yA, xB, yB;
cin >> xA >> yA >> xB >> yB;
auto cross = [](double ax,double ay,double bx,double by){
return ax*by - ay*bx;
};
auto dot = [](double ax,double ay,double bx,double by){
return ax*bx + ay*by;
};
// 기본 벡터/반지름/단위방향
double wx = xB - xA, wy = yB - yA;
double r = hypot(wx, wy);
double ux = wx / r, uy = wy / r; // 단위방향 (A->B)
const double EPS = 1e-12;
long double total = 0.0L;
for (int i = 0; i < N; ++i) {
double vx = pts[i].first - xA; // v = P - A
double vy = pts[i].second - yA;
double d = hypot(vx, vy); // |v|
double c = cross(wx, wy, vx, vy); // ★ 왼쪽 판정: cross(B-A, P-A)
bool inDisk = (d <= r + EPS);
bool inHalf = (c >= -EPS); // 경계 포함
if (inDisk && inHalf) continue; // 이미 반원 안
double best = 1e100;
// 후보 1) 원 밖 + 왼쪽이면: 원호까지의 최단거리 = d - r (방사투영)
if (d > r + EPS && c > EPS) {
best = min(best, d - r);
}
// 후보 2/3) 지름 선분까지의 거리 (반평면 경계선 = A + t*u, |t| <= r 로 제한)
double t = dot(vx, vy, ux, uy); // 평행 성분
double d_perp = fabs(cross(vx, vy, ux, uy)); // 직선까지 수직거리 (u 단위)
if (t >= -r - EPS && t <= r + EPS) {
// 선분 내부로 수직 투영 가능
best = min(best, d_perp);
} else {
// 선분 밖이면 가까운 끝점(A ± r*u)
double parallel_excess = fabs(t) - r;
if (parallel_excess < 0) parallel_excess = 0; // 안정화
best = min(best, hypot(parallel_excess, d_perp));
}
total += best;
}
cout.setf(std::ios::fixed);
cout << setprecision(10) << (double)total << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IE47CiAgICBpZiAoIShjaW4gPj4gTikpIHJldHVybiAwOwogICAgdmVjdG9yPHBhaXI8ZG91YmxlLGRvdWJsZT4+IHB0cyhOKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgKytpKSBjaW4gPj4gcHRzW2ldLmZpcnN0ID4+IHB0c1tpXS5zZWNvbmQ7CgogICAgZG91YmxlIHhBLCB5QSwgeEIsIHlCOwogICAgY2luID4+IHhBID4+IHlBID4+IHhCID4+IHlCOwoKICAgIGF1dG8gY3Jvc3MgPSBbXShkb3VibGUgYXgsZG91YmxlIGF5LGRvdWJsZSBieCxkb3VibGUgYnkpewogICAgICAgIHJldHVybiBheCpieSAtIGF5KmJ4OwogICAgfTsKICAgIGF1dG8gZG90ID0gW10oZG91YmxlIGF4LGRvdWJsZSBheSxkb3VibGUgYngsZG91YmxlIGJ5KXsKICAgICAgICByZXR1cm4gYXgqYnggKyBheSpieTsKICAgIH07CgogICAgLy8g6riw67O4IOuyoe2EsC/rsJjsp4DrpoQv64uo7JyE67Cp7ZalCiAgICBkb3VibGUgd3ggPSB4QiAtIHhBLCB3eSA9IHlCIC0geUE7CiAgICBkb3VibGUgciA9IGh5cG90KHd4LCB3eSk7CiAgICBkb3VibGUgdXggPSB3eCAvIHIsICB1eSA9IHd5IC8gcjsgLy8g64uo7JyE67Cp7ZalIChBLT5CKQoKICAgIGNvbnN0IGRvdWJsZSBFUFMgPSAxZS0xMjsKICAgIGxvbmcgZG91YmxlIHRvdGFsID0gMC4wTDsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkgewogICAgICAgIGRvdWJsZSB2eCA9IHB0c1tpXS5maXJzdCAgLSB4QTsgICAvLyB2ID0gUCAtIEEKICAgICAgICBkb3VibGUgdnkgPSBwdHNbaV0uc2Vjb25kIC0geUE7CgogICAgICAgIGRvdWJsZSBkID0gaHlwb3QodngsIHZ5KTsgICAgICAgICAgICAgICAgIC8vIHx2fAogICAgICAgIGRvdWJsZSBjID0gY3Jvc3Mod3gsIHd5LCB2eCwgdnkpOyAgICAgICAgIC8vIOKYhSDsmbzsqr0g7YyQ7KCVOiBjcm9zcyhCLUEsIFAtQSkKICAgICAgICBib29sIGluRGlzayA9IChkIDw9IHIgKyBFUFMpOwogICAgICAgIGJvb2wgaW5IYWxmID0gKGMgPj0gLUVQUyk7ICAgICAgICAgICAgICAgIC8vIOqyveqzhCDtj6ztlagKCiAgICAgICAgaWYgKGluRGlzayAmJiBpbkhhbGYpIGNvbnRpbnVlOyAgICAgICAgICAgLy8g7J2066+4IOuwmOybkCDslYgKCiAgICAgICAgZG91YmxlIGJlc3QgPSAxZTEwMDsKCiAgICAgICAgLy8g7ZuE67O0IDEpIOybkCDrsJYgKyDsmbzsqr3snbTrqbQ6IOybkO2YuOq5jOyngOydmCDstZzri6jqsbDrpqwgPSBkIC0gciAo67Cp7IKs7Yis7JiBKQogICAgICAgIGlmIChkID4gciArIEVQUyAmJiBjID4gRVBTKSB7CiAgICAgICAgICAgIGJlc3QgPSBtaW4oYmVzdCwgZCAtIHIpOwogICAgICAgIH0KCiAgICAgICAgLy8g7ZuE67O0IDIvMykg7KeA66aEIOyEoOu2hOq5jOyngOydmCDqsbDrpqwgKOuwmO2PieuptCDqsr3qs4TshKAgPSBBICsgdCp1LCB8dHwgPD0gciDroZwg7KCc7ZWcKQogICAgICAgIGRvdWJsZSB0ID0gZG90KHZ4LCB2eSwgdXgsIHV5KTsgICAgICAgICAgICAgICAgIC8vIO2Pie2WiSDshLHrtoQKICAgICAgICBkb3VibGUgZF9wZXJwID0gZmFicyhjcm9zcyh2eCwgdnksIHV4LCB1eSkpOyAgICAvLyDsp4HshKDquYzsp4Ag7IiY7KeB6rGw66asICh1IOuLqOychCkKCiAgICAgICAgaWYgKHQgPj0gLXIgLSBFUFMgJiYgdCA8PSByICsgRVBTKSB7CiAgICAgICAgICAgIC8vIOyEoOu2hCDrgrTrtoDroZwg7IiY7KeBIO2IrOyYgSDqsIDriqUKICAgICAgICAgICAgYmVzdCA9IG1pbihiZXN0LCBkX3BlcnApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIOyEoOu2hCDrsJbsnbTrqbQg6rCA6rmM7Jq0IOuBneygkChBIMKxIHIqdSkKICAgICAgICAgICAgZG91YmxlIHBhcmFsbGVsX2V4Y2VzcyA9IGZhYnModCkgLSByOwogICAgICAgICAgICBpZiAocGFyYWxsZWxfZXhjZXNzIDwgMCkgcGFyYWxsZWxfZXhjZXNzID0gMDsgLy8g7JWI7KCV7ZmUCiAgICAgICAgICAgIGJlc3QgPSBtaW4oYmVzdCwgaHlwb3QocGFyYWxsZWxfZXhjZXNzLCBkX3BlcnApKTsKICAgICAgICB9CgogICAgICAgIHRvdGFsICs9IGJlc3Q7CiAgICB9CgogICAgY291dC5zZXRmKHN0ZDo6aW9zOjpmaXhlZCk7CiAgICBjb3V0IDw8IHNldHByZWNpc2lvbigxMCkgPDwgKGRvdWJsZSl0b3RhbCA8PCAiXG4iOwogICAgcmV0dXJuIDA7Cn0=