#include <bits/stdc++.h>
using namespace std;
template <typename T>
using pq = priority_queue<T>;
template <typename T>
using minpq = priority_queue<T, vector<T>, greater<T>>;
template <typename T, typename K>
using ump = unordered_map<T, K>;
const long long dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
const long long mod = 1000000007;
const long long inf = long long(1e9);
const long long e5 = long long(1e5);
const long long ll_inf = long long(1e9) * long long(1e9);
template <class T>
ostream &operator<<(ostream &out, const vector<T> list) {
  for (auto &e : list) out << e << '\n';
  printf("\n");
  return out;
}
template <class T>
istream &operator>>(istream &in, vector<T> list) {
  long long n = list.size();
  for (long long i = 0; i < (long long)(n); i++) in >> list[i];
  return in;
}
template <class T>
void dump_debug(T list) {}
int main() {
  double n;
  cin >> n;
  vector<double> v(n);
  cin >> v;
  sort((v).begin(), (v).end());
  double now = (v[0] + v[1]) / 2;
  for (long long i = 2; i < n; ++i) {
    now = (now + v[i]) / 2;
  }
  cout << now << endl;
  return 0;
}
