#include <bits/stdc++.h>
using namespace std;
template <class T>
ostream& operator<<(ostream& os, vector<T> V) {
  for (auto v : V) os << v << " ";
  return cout << "";
}
template <class T>
ostream& operator<<(ostream& os, set<T> S) {
  for (auto s : S) os << s << " ";
  return cout << "";
}
template <class L, class R>
ostream& operator<<(ostream& os, pair<L, R> P) {
  return os << P.first << " " << P.second;
}
const long long mod = 1;
long long inv(long long i) {
  if (i == 1) return 1;
  return (mod - ((mod / i) * inv(mod % i)) % mod) % mod;
}
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b, b % a);
}
struct Point {
  double x, y, z;
  Point() {}
  Point(double x, double y, double z) {
    this->x = x;
    this->y = y;
    this->z = z;
  }
};
int N;
Point p[110];
double dis(Point p, Point q) {
  return sqrt((p.x - q.x) * (p.x - q.x) + (p.y - q.y) * (p.y - q.y) +
              (p.z - q.z) * (p.z - q.z));
}
double f(double x, double y, double z) {
  double res = 0;
  int i;
  for (i = 1; i <= N; i++) {
    res = max(res, dis(p[i], Point(x, y, z)));
  }
  return res;
}
double ts3(double x, double y) {
  double l = -10000, r = 10000;
  while (r - l > 0.0000000001) {
    double m1 = (3 * l + 2 * r) / 5, m2 = (3 * r + 2 * l) / 5;
    double f1 = f(x, y, m1), f2 = f(x, y, m2);
    if (f1 > f2)
      l = m1;
    else
      r = m2;
  }
  return l;
}
double ts2(double x) {
  double l = -10000, r = 10000;
  while (r - l > 0.000000001) {
    double m1 = (3 * l + 2 * r) / 5, m2 = (3 * r + 2 * l) / 5;
    double f1 = f(x, m1, ts3(x, m1)), f2 = f(x, m2, ts3(x, m2));
    if (f1 > f2)
      l = m1;
    else
      r = m2;
  }
  return l;
}
double ts() {
  double l = -10000, r = 10000;
  while (r - l > 0.00000001) {
    double m1 = (3 * l + 2 * r) / 5, m2 = (3 * r + 2 * l) / 5;
    double y1 = ts2(m1), y2 = ts2(m2);
    double f1 = f(m1, y1, ts3(m1, y1)), f2 = f(m2, y2, ts3(m2, y2));
    if (f1 > f2)
      l = m1;
    else
      r = m2;
  }
  return l;
}
int main() {
  cin >> N;
  int i;
  for (i = 1; i <= N; i++) cin >> p[i].x >> p[i].y >> p[i].z;
  double x = ts();
  double y = ts2(x);
  double z = ts3(x, y);
  cout << fixed << setprecision(8);
  cout << (x) << " " << (y) << " " << (z) << "\n";
}
