#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vi = vector<int>;
using vvi = vector<vi>;
using vl = vector<ll>;
using vvl = vector<vl>;
using P = pair<int, int>;
using PL = pair<ll, ll>;
using vp = vector<P>;
using vpl = vector<PL>;
template <typename T>
constexpr auto inf = numeric_limits<T>::max() / 2;
constexpr int INF = inf<int>, MOD = 1000000007;
constexpr ll LINF = inf<ll>;
void YES(int n) { cout << ((n) ? "YES" : "NO") << '\n'; }
void Yes(int n) { cout << ((n) ? "Yes" : "No") << '\n'; }
void Poss(int n) { cout << ((n) ? "Possible" : "Impossible") << '\n'; }
void _print(ostream& s) {}
template <class T, class... U>
void _print(ostream& s, T&& t, U&&... u) {
  s << t << (sizeof...(u) ? ' ' : '\n');
  _print(s, u...);
}
template <class... T>
void print(T&&... t) {
  _print(cout, t...);
}
struct osd {
  template <class T>
  osd& operator<<(const T& t) {
    return *this;
  }
};
osd cer_;
template <class T>
void chmax(T& a, const T& b) {
  if (a < b) a = b;
}
template <class T>
void chmin(T& a, const T& b) {
  if (a > b) a = b;
}
template <class T>
ostream& operator<<(ostream& o, const vector<T>& v) {
  for (auto&& i : v) o << i << ' ';
  return o;
}
template <class T>
istream& operator>>(istream& i, vector<T>& v) {
  for (T& j : v) i >> j;
  return i;
}
template <class T, class U>
ostream& operator<<(ostream& o, const pair<T, U>& p) {
  return o << p.first << ' ' << p.second;
}
template <class T, class U>
istream& operator>>(istream& i, pair<T, U>& p) {
  return i >> p.first >> p.second;
}
template <class T>
ostream& operator<<(ostream& o, const set<T>& v) {
  for (auto&& i : v) o << i << ' ';
  return o;
}
template <class T>
ostream& operator<<(ostream& o, const multiset<T>& v) {
  for (auto&& i : v) o << i << ' ';
  return o;
}
template <class T>
vector<T>& operator<<(vector<T>& v, const T& t) {
  v.push_back(t);
  return v;
}
template <class T>
set<T>& operator<<(set<T>& v, const T& t) {
  v.insert(t);
  return v;
}
template <class T>
multiset<T>& operator<<(multiset<T>& v, const T& t) {
  v.insert(t);
  return v;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(0);
  int n;
  cin >> n;
  vl v(n);
  cin >> v;
  sort((v).begin(), (v).end());
  int a = v[0];
  ll k = 0;
  for (int i = 1, i_l = (n); i < i_l; ++i) {
    a += v[i] << k;
    k++;
  }
  cout << a / (double)(1ll << k) << '\n';
  return 0;
}
