#include <sstream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <iostream>
#include <utility>
#include <set>
#include <cctype>
#include <queue>
#include <stack>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <valarray>

#define INF 1000000000

using namespace std;
typedef long long ll;
const int HANSHIN = 334;

valarray<double> q[HANSHIN];
valarray<double> p(3);

double getDist(valarray<double>a, valarray<double>b, valarray<double>c, valarray<double> d) {
    auto P = c-b;
    auto Q = d-b;
    valarray<double> R(3);
    R[0] = P[1]*Q[2] - Q[1]*P[2];
    R[1] = P[2]*Q[0] - Q[2]*P[0];
    R[2] = P[0]*Q[1] - Q[0]*P[1];
    double normal = sqrt(R[0]*R[0] + R[1]*R[1] + R[2]*R[2]);
    for (int i = 0; i < 3; i++) R[i] /= normal;
    a -= b;
    return abs(R[0]*a[0] + R[1]*a[1] + R[2]*a[2]);
}

int main(void) {
    for (int i = 0; i < HANSHIN; i++) {
        q[i].resize(3);
    }
    int N;
    cin >> N;
    cin >> p[0] >> p[1] >> p[2];
    for (int i = 0; i < N; i++) {
        cin >> q[i][0] >> q[i][1] >> q[i][2];
    }
    double ans = 0;
    for (int i = 0; i < N; i++) {
        for (int j = i+1; j < N; j++) {
            for (int k = j+1; k < N; k++) {
                ans += getDist(p, q[i], q[j], q[k]);
            }
        }
    }
    printf("%.10lf\n", ans);
    return 0;
}