#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-6;
const int N = 100;
int n;
double x[N], y[N], z[N], ansX, ansY, ansZ;
inline double sq(double n) { return n * n; }
double solve(double xx, double yy, double zz) {
  double res = 0.0;
  for (int i = 0; i < n; i++)
    res = max(sq(xx - x[i]) + sq(yy - y[i]) + sq(zz - z[i]), res);
  return res;
}
double solveX(double y, double z) {
  double l = -1e7, r = 1e7, m1, m2, f1, f2;
  while (r - l > EPS) {
    m1 = l + (r - l) / 3.0;
    m2 = r - (r - l) / 3.0;
    f1 = solve(m1, y, z);
    f2 = solve(m2, y, z);
    if (f1 < f2)
      r = m2;
    else
      l = m1;
  }
  ansX = l;
  return f1;
}
double solveY(double z) {
  double l = -1e7, r = 1e7, m1, m2, f1, f2;
  while (r - l > EPS) {
    m1 = l + (r - l) / 3.0;
    m2 = r - (r - l) / 3.0;
    f1 = solveX(m1, z);
    f2 = solveX(m2, z);
    if (f1 < f2)
      r = m2;
    else
      l = m1;
  }
  ansY = l;
  return f1;
}
void solveZ() {
  double l = -1e7, r = 1e7, m1, m2, f1, f2;
  while (r - l > EPS) {
    m1 = l + (r - l) / 3.0;
    m2 = r - (r - l) / 3.0;
    f1 = solveY(m1);
    f2 = solveY(m2);
    if (f1 < f2)
      r = m2;
    else
      l = m1;
  }
  ansZ = l;
  solveY(l);
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> x[i] >> y[i] >> z[i];
  solveZ();
  printf("%.10lf %.10lf %.10lf", ansX, ansY, ansZ);
  return 0;
}
