#include <bits/stdc++.h>
using namespace std;
int n;
double T;
struct Node {
  double x, y, z;
} P[110];
inline double dis(const Node &A, const Node &B) {
  double dx = A.x - B.x, dy = A.y - B.y, dz = A.z - B.z;
  return dx * dx + dy * dy + dz * dz;
}
inline int find(const Node &p) {
  int ret;
  double dist(-1), tmp;
  for (int i = 0; i < n; ++i)
    if ((tmp = dis(P[i], p)) > dist) ret = i, dist = tmp;
  return ret;
}
inline void calc() {
  Node p = (Node){0, 0, 0};
  T = 1;
  while (T > 1e-9) {
    int i = find(p);
    double dx = P[i].x - p.x, dy = P[i].y - p.y, dz = P[i].z - p.z;
    p.x += dx * T, p.y += dy * T, p.z += dz * T;
    T *= 0.995;
  }
  printf("%.6lf %.6lf %.6lf\n", p.x, p.y, p.z);
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) scanf("%lf%lf%lf", &P[i].x, &P[i].y, &P[i].z);
  calc();
  return 0;
}
