using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    static List<double> results = new List<double>();

    public static void Main(string[] args)
    {
        var n = int.Parse(Console.ReadLine());
        var valuesStr = Console.ReadLine().Split(' ');

        List<int> used = new List<int>();
        for (int i = 0; i < valuesStr.Length; i++)
        {
            used.Add(i);
            for (int j = 0; j < valuesStr.Length; j++)
            {
                if (!used.Contains(j))
                {
                    GetPatternsValue(i, j, valuesStr);
                }
            }
        }
        Console.WriteLine(results.Max());
    }

    public static void GetPatternsValue(int x, int y, string[] valuesStr)
    {
        var xValue = double.Parse(valuesStr[x]);
        var yValue = double.Parse(valuesStr[y]);
        var value = (xValue + yValue) / 2.0f;

        var newValuesStr = new string[valuesStr.Length - 1];

        int k = 0;
        for (int i = 0; i < valuesStr.Length; i++)
        {
            if (i == y)
            {
                newValuesStr[k] = value.ToString();
            }
            else if (i != x)
            {
                newValuesStr[k] = valuesStr[i];
            }
            else
            {
                continue;
            }
            k++;
        }

        if (newValuesStr.Length == 1)
        {
            results.Add(value);
            return;
        }
        else
        {
            List<int> used = new List<int>();
            for (int i = 0; i < newValuesStr.Length; i++)
            {
                used.Add(i);
                for (int j = 0; j < newValuesStr.Length; j++)
                {
                    if (!used.Contains(j))
                    {
                        GetPatternsValue(i, j, newValuesStr);
                    }
                }
            }
        }
    }

}