#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000;
const int vc = 1e4 + 5;
double n, x[maxn], y[maxn], z[maxn];
double resx, resy, resz;
double kc(double cx, double cy, double cz) {
  double res(0);
  for (int i = 1; i <= n; i++)
    res = max(res, (x[i] - cx) * (x[i] - cx) + (y[i] - cy) * (y[i] - cy) +
                       (z[i] - cz) * (z[i] - cz));
  return res;
}
double solvez(double cx, double cy) {
  double l, r, ret;
  l = -10000;
  r = 10000;
  ret = 1e+50;
  while (l + 1e-7 < r) {
    double m1, m2, f1, f2;
    m1 = l * 2.0 / 3 + r / 3;
    m2 = r * 2.0 / 3 + l / 3;
    f1 = kc(cx, cy, m1);
    f2 = kc(cx, cy, m2);
    if (f1 < f2)
      r = m2;
    else
      l = m1;
    ret = f1;
  }
  resz = l;
  return ret;
}
double solvey(double cx) {
  double l = -10000;
  double r = 10000;
  double ret = 1e+50;
  while (l + 1e-7 < r) {
    double m1 = l * 2.0 / 3 + r / 3;
    double m2 = r * 2.0 / 3 + l / 3;
    double f1 = solvez(cx, m1);
    double f2 = solvez(cx, m2);
    if (f1 < f2)
      r = m2;
    else
      l = m1;
    ret = f1;
  }
  resy = l;
  return ret;
}
void solvex() {
  double l = -10000;
  double r = 10000;
  double ret = 1e+50;
  while (l + 1e-7 < r) {
    double m1 = l * 2.0 / 3 + r / 3;
    double m2 = r * 2.0 / 3 + l / 3;
    double f1 = solvey(m1);
    double f2 = solvey(m2);
    if (f1 < f2)
      r = m2;
    else
      l = m1;
    ret = f1;
  }
  resx = l;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> x[i] >> y[i] >> z[i];
  solvex();
  cout << fixed << setprecision(6);
  cout << resx << " " << resy << " " << resz;
  return 0;
}
