#include <bits/stdc++.h>
using namespace std;
struct point {
  double x, y, z;
} ps[120], q;
int n;
double dist(point a, point b) {
  a.x -= b.x;
  a.y -= b.y;
  a.z -= b.z;
  return sqrt(a.x * a.x + a.y * a.y + a.z * a.z);
}
int maxdist(point p) {
  double res = 0;
  int k = 0, i;
  for (i = 0; i < n; i++) {
    double tmp = dist(p, ps[i]);
    if (tmp > res) {
      k = i;
      res = dist(p, ps[i]);
    }
  }
  return k;
}
int main() {
  while (cin >> n && n) {
    int i;
    for (i = 0; i < n; i++) {
      scanf("%lf%lf%lf", &ps[i].x, &ps[i].y, &ps[i].z);
      ps[i].x += 10000;
      ps[i].y += 10000;
      ps[i].z += 10000;
    }
    if (n == 1) {
      printf("%.3lf %.3lf %.3lf\n", ps[0].x + 1e-8 - 10000,
             ps[0].y + 1e-8 - 10000, ps[0].z + 1e-8 - 10000);
      continue;
    }
    double step = 100000;
    double ans = 1e20;
    q.x = q.y = q.z = 0;
    int k = 1;
    while (step > 1e-8) {
      int d = maxdist(q);
      double tmp = dist(ps[d], q);
      if (ans > tmp) ans = tmp;
      double dx = ps[d].x - q.x;
      double dy = ps[d].y - q.y;
      double dz = ps[d].z - q.z;
      dx = dx / tmp;
      dy = dy / tmp;
      dz = dz / tmp;
      q.x += dx * step;
      q.y += dy * step;
      q.z += dz * step;
      step *= 0.995;
    }
    printf("%.8lf %.8lf %.8lf\n", q.x + 1e-8 - 10000, q.y + 1e-8 - 10000,
           q.z + 1e-8 - 10000);
  }
  return 0;
}
