#include #include #include using namespace std; typedef long long ll; typedef double ld; ll x[500], y[500], z[500]; void cross(int i, int j, int k, ll *result) { result[0] = (y[j] - y[i])*(z[k] - z[i]) - (z[j] - z[i])*(y[k] - y[i]); result[1] = (z[j] - z[i])*(x[k] - x[i]) - (x[j] - x[i])*(z[k] - z[i]); result[2] = (x[j] - x[i])*(y[k] - y[i]) - (y[j] - y[i])*(x[k] - x[i]); } ll side(int i, int j, int k, int t) { ll c[3]; cross(i, j, k, c); return (x[t]-x[i])*c[0] + (y[t]-y[i])*c[1] + (z[t]-z[i])*c[2]; } ld norm(ll *x) { return sqrt(ld(x[0]*x[0] + x[1]*x[1] + x[2]*x[2])); } int main() { int n, i, j, k, t; while (cin >> n) { if (n == 0) return 0; for (i = 0; i < n; i++) cin >> x[i] >> y[i] >> z[i]; ld totalArea = 0; for (i = 0; i < n; i++) for (j = i+1; j < n; j++) for (k = j+1; k < n; k++) { bool isNeg = 0, isPos = 0; for (t = 0; t < n; t++) { ll x = side(i, j, k, t); isPos |= (x > 0); isNeg |= (x < 0); } if (!isPos || !isNeg) { ll v[3]; cross(i, j, k, v); totalArea += 0.5f * norm(v); } } cout << ll(totalArea+0.5) << endl; } }