#define _CRT_SECURE_NO_WARNINGS #define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #define INF 1050000000 #define SIZE 300 #define MOD 1000000007 using namespace std; /* 平面と点との距離 */ double distance(vector P, vector Q1, vector Q2, vector Q3) { double res = 0.0; double a, b, c, d; a = (Q2[1] - Q1[1]) * (Q3[2] - Q1[2]) - (Q3[1] - Q1[1]) * (Q2[2] - Q1[2]); b = (Q2[2] - Q1[2]) * (Q3[0] - Q1[0]) - (Q3[2] - Q1[2]) * (Q2[0] - Q1[0]); c = (Q2[0] - Q1[0]) * (Q3[1] - Q1[1]) - (Q3[0] - Q1[0]) * (Q2[1] - Q1[1]); d = - a * Q1[0] - b * Q1[1] - c * Q1[2]; res += fabs(a * P[0] + b * P[1] + c * P[2] + d) / sqrt(a * a + b * b + c * c); return (res); } int main(void) { int n; vector P; double x, y, z; vector Q[SIZE]; double res = 0.0; cin >> n; cin >> x >> y >> z; P.push_back(x); P.push_back(y); P.push_back(z); for (int i = 0; i < n; i++) { cin >> x >> y >> z; Q[i].push_back(x); Q[i].push_back(y); Q[i].push_back(z); } for (int i = 0; i < n - 2; i++) { for (int j = i + 1; j < n - 1; j++) { for (int k = j + 1; k < n; k++) { res += distance(P, Q[i], Q[j], Q[k]); } } } cout << fixed << setprecision(10) << res << endl; return (0); } /*for (int i = 0; i < n; i++) { }*/