#include <iostream>
#include <string>
#include <sstream>
#include<bits/stdc++.h>
#include<math.h>
#include<algorithm>
#define len(a) ((int) (a).size())
#define ll long long
#define N 100000
#define fr(i,m,n) for(ll i=m;i<=n;i++)
#define f_r(i,m,n) for(ll i=m;i<n;i++)
#define pi acos(-1.0)
#define MAXN 1000000007
#define pf printf


using namespace std;
#define nMX 50000
#define pMX 50000
int pr[pMX+1],prnum[nMX+1];

int sieve()
{
    int i,j;
    for(i=1;i<=nMX;i++)
        prnum[i]=i+1;
    for(i=1;i<=nMX;i++)
        if(prnum[i]!=-1)
            for(j=2*prnum[i]-1;j<=nMX;j+=prnum[i])
                    prnum[j]=-1;
    j=0;
    for(i=1;i<=nMX;i++)
        if(prnum[i]!=-1)
            pr[++j]=prnum[i];
    return j;
}
int f[10000] = {0};
ll fib(ll n)
{
    // Base cases
    if (n == 0)
        return 0;
    if (n == 1 || n == 2)
        return (f[n] = 1);

    // If fib(n) is already computed
    if (f[n])
        return f[n];

    ll k = (n & 1)? (n+1)/2 : n/2;

    // Applyting above formula [Note value n&1 is 1
    // if n is odd, else 0.
    f[n] = (n & 1)? (fib(k)*fib(k) + fib(k-1)*fib(k-1))
           : (2*fib(k-1) + fib(k))*fib(k);

    return f[n];
}
bool prime(ll n){
    if (n<2)
        return false;
    for(ll i=2;i*i<=n;i++)
    {
        if (n%i == 0)   return false;
    }

    return true;

            }
ll bino(ll n, ll k)
{
    ll C[k+1];
    memset(C, 0, sizeof(C));

    C[0] = 1;  // nC0 is 1

    for (ll i = 1; i <= n; i++)
    {
        // Compute next row of pascal triangle using
        // the previous row
        for (ll j = min(i, k); j > 0; j--)
            C[j] = C[j] + C[j-1];
    }
    return C[k];
}
bool myComparison(const pair<int,int> &a,const pair<int,int> &b)
{
       return a.second<b.second;
}


ll  bigmod ( ll a, ll p, ll m )
{
    if ( p == 0 )return 1; // If power is 0, then a ^ 0 = 1 for any value of a, And 1 Mod m=1 for any value of m, So return 1

    if ( p % 2 ) // If power is odd, Split it : a ^ 5 =( a )* (a ^ 4) --> left and right child respectively.
    {
        return ( ( a % m ) * ( bigmod ( a, p - 1, m ) ) ) % m;
    }
    else //If power is even then split it equally and return the result...
    {
        long long c = bigmod ( a, p / 2, m );
        return ( (c%m) * (c%m) ) % m;
    }
}
bool v(char a)
{
    if(a=='a' || a=='e'|| a=='i' || a=='o' || a=='u')
        {return 1;}
        else
            return 0;

}
ll max(ll a, ll b) { return (a > b)? a : b; }
ll min(ll a, ll b) { return (a > b)? b : a; }

using namespace std;


int findMin(int arr[], int n)
{

    int sum = 0;
    for (int i = 0; i < n; i++)
        sum += arr[i];


    bool dp[n+1][sum+1];

    for (int i = 0; i <= n; i++)
        dp[i][0] = true;


    for (int i = 1; i <= sum; i++)
        dp[0][i] = false;


    for (int i=1; i<=n; i++)
    {
        for (int j=1; j<=sum; j++)
        {

            dp[i][j] = dp[i-1][j];

            if (arr[i-1] <= j)
                dp[i][j] |= dp[i-1][j-arr[i-1]];
        }
    }

    int diff = INT_MAX;


    for (int j=sum/2; j>=0; j--)
    {
        // Find the
        if (dp[n][j] == true)
        {
            diff = sum-2*j;
            break;
        }
    }
    return diff;
}
ll printNcR(int n, int r)
{
    int M=1000003;

    long long p = 1, k = 1;
    if (n - r < r)
        r = n - r;

    if (r != 0)
        { while (r)
            {
                p *= n;
                k *= r;
            long long m = __gcd(p, k);
            p /= m;
            k /= m;
            n--;
            r--;
        }
    }
    else
        p = 1;
    return p%M;
}
int joseph ( int n,int k)
{
    if(n==1)
        return 1;
    else
        return ((joseph(n-1, k) + k - 1) % n + 1 );
}
int bi(vector<int>aa,int a,int b,int c)
{ if( c>=aa[b])
return b;
else if (c>= aa[(a+b)/2])
    return bi(aa, (a+b)/2, b,c);
else
    return bi(aa, a, (a+b)/2,c);
}


int main()
{
 ll a;
 cin>>a;
 ll ara[1000];
 f_r(i,0,a)
 cin>>ara[i];
 sort(ara,ara+a);
 double ans=ara[0];
 f_r(i,1,a)
 {
     ans=(ans+ara[i])*.5;
 }
 cout<<ans;
}
