#include <bits/stdc++.h>
using namespace std;
int inf = 1e9;
double eps = 1e-6;
struct kord {
  double x, y, z;
  kord(){};
};
double ansY = 0., ansX = 0.;
vector<kord> v;
int n;
double lx = 1e4 * 1.0, rx = -1e4 * 1.0;
double ly = 1e4 * 1.0, ry = -1e4 * 1.0;
double lz = 1e4 * 1.0, rz = -1e4 * 1.0;
double R(double x, double y, double z) {
  double ma = -1e9;
  for (int i = 0; i < n; ++i) {
    double t = (x - v[i].x) * (x - v[i].x) + (y - v[i].y) * (y - v[i].y) +
               (z - v[i].z) * (z - v[i].z);
    if (t > ma) ma = t;
  }
  return ma;
}
double fx(double y, double z) {
  double l = lx, r = rx;
  for (int i = 0; i < 50; ++i) {
    double m1 = (r + 2 * l) / 3.;
    double m2 = (l + 2 * r) / 3.;
    if (R(m1, y, z) > R(m2, y, z))
      l = m1;
    else
      r = m2;
  }
  ansX = r;
  return R(r, y, z);
}
double fy(double z) {
  double l = ly, r = ry;
  for (int i = 0; i < 50; ++i) {
    double m1 = (r + 2 * l) / 3.;
    double m2 = (l + 2 * r) / 3.;
    if (fx(m1, z) > fx(m2, z))
      l = m1;
    else
      r = m2;
  }
  ansY = r;
  return fx(r, z);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n;
  v.resize(n);
  for (int i = 0; i < n; ++i) {
    cin >> v[i].x >> v[i].y >> v[i].z;
    if (v[i].x < lx) lx = v[i].x;
    if (v[i].x > rx) rx = v[i].x;
    if (v[i].y < ly) ly = v[i].y;
    if (v[i].y > ry) ry = v[i].y;
    if (v[i].z < lz) lz = v[i].z;
    if (v[i].z > rz) rz = v[i].z;
  }
  double l = lz, r = rz;
  for (int i = 0; i < 50; ++i) {
    double m1 = (r + 2 * l) / 3.;
    double m2 = (l + 2 * r) / 3.;
    if (fy(m1) > fy(m2))
      l = m1;
    else
      r = m2;
  }
  cout.precision(6);
  cout << fixed;
  cout << ansX << " " << ansY << " " << r << "\n";
  return 0;
}
