import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;

public class Main {
	public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		String str[] = br.readLine().split(" ");

		double v[] = new double[n];
		ArrayList<ArrayList<Double>> list = new ArrayList<ArrayList<Double>>();
		for (int i = 0; i < n; i++) {
			v[i] = Double.parseDouble(str[i]);
		}

		Arrays.sort(v);
		double d = v[0];
		for (int i = 0; i < n; i++) {
			d = (d + v[i]) / 2;
		}
		System.out.println(d);
	}

	static double get(double d[]) {
		if (d.length == 2)
			return (d[0] + d[1]) / 2;
		double dou1[] = new double[d.length / 2];
		double dou2[];
		if (d.length % 3 == 0)
			dou2 = new double[(d.length / 2)];
		else {
			dou2 = new double[(d.length / 2) + 1];
		}
		for (int i = 0; i < d.length / 2; i++) {
			dou1[i] = d[i];
			if (d.length % 3 == 0)
				dou2[i] = d[i + (d.length / 2)];
			else {
				dou2[i] = d[i + ((d.length / 2) + 1)];
			}

		}
		return (get(dou1) + get(dou2)) / 2;
	}
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.util.ArrayList; ArrayList java.util import java.util.Arrays; Arrays java.util public class Main {
	public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		String str[] = br.readLine().split(" ");

		double v[] = new double[n];
		ArrayList<ArrayList<Double>> list = new ArrayList<ArrayList<Double>>();
		for (int i = 0; i < n; i++) {
			v[i] = Double.parseDouble(str[i]);
		}

		Arrays.sort(v);
		double d = v[0];
		for (int i = 0; i < n; i++) {
			d = (d + v[i]) / 2;
		}
		System.out.println(d);
	}

	static double get(double d[]) {
		if (d.length == 2)
			return (d[0] + d[1]) / 2;
		double dou1[] = new double[d.length / 2];
		double dou2[];
		if (d.length % 3 == 0)
			dou2 = new double[(d.length / 2)];
		else {
			dou2 = new double[(d.length / 2) + 1];
		}
		for (int i = 0; i < d.length / 2; i++) {
			dou1[i] = d[i];
			if (d.length % 3 == 0)
				dou2[i] = d[i + (d.length / 2)];
			else {
				dou2[i] = d[i + ((d.length / 2) + 1)];
			}

		}
		return (get(dou1) + get(dou2)) / 2;
	}
} Main public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		String str[] = br.readLine().split(" ");

		double v[] = new double[n];
		ArrayList<ArrayList<Double>> list = new ArrayList<ArrayList<Double>>();
		for (int i = 0; i < n; i++) {
			v[i] = Double.parseDouble(str[i]);
		}

		Arrays.sort(v);
		double d = v[0];
		for (int i = 0; i < n; i++) {
			d = (d + v[i]) / 2;
		}
		System.out.println(d);
	} main {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		String str[] = br.readLine().split(" ");

		double v[] = new double[n];
		ArrayList<ArrayList<Double>> list = new ArrayList<ArrayList<Double>>();
		for (int i = 0; i < n; i++) {
			v[i] = Double.parseDouble(str[i]);
		}

		Arrays.sort(v);
		double d = v[0];
		for (int i = 0; i < n; i++) {
			d = (d + v[i]) / 2;
		}
		System.out.println(d);
	} BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br new BufferedReader(new InputStreamReader(System.in)) int n = Integer.parseInt(br.readLine()); n Integer.parseInt(br.readLine()) Integer.parseInt Integer br.readLine() br.readLine br String str[] = br.readLine().split(" "); str br.readLine().split(" ") br.readLine().split br.readLine() br.readLine br " " double v[] = new double[n]; v new double[n] n ArrayList<ArrayList<Double>> list = new ArrayList<ArrayList<Double>>(); list new ArrayList<ArrayList<Double>>() for (int i = 0; i < n; i++) {
			v[i] = Double.parseDouble(str[i]);
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			v[i] = Double.parseDouble(str[i]);
		} {
			v[i] = Double.parseDouble(str[i]);
		} v[i] = Double.parseDouble(str[i]) v[i] v i Double.parseDouble(str[i]) Double.parseDouble Double str[i] str i Arrays.sort(v) Arrays.sort Arrays v double d = v[0]; d v[0] v 0 for (int i = 0; i < n; i++) {
			d = (d + v[i]) / 2;
		} int i = 0; int i = 0; i 0 i < n i n i++ i++ i {
			d = (d + v[i]) / 2;
		} {
			d = (d + v[i]) / 2;
		} d = (d + v[i]) / 2 d (d + v[i]) / 2 (d + v[i]) d v[i] v i 2 System.out.println(d) System.out.println System.out System System.out d String args[] args static double get(double d[]) {
		if (d.length == 2)
			return (d[0] + d[1]) / 2;
		double dou1[] = new double[d.length / 2];
		double dou2[];
		if (d.length % 3 == 0)
			dou2 = new double[(d.length / 2)];
		else {
			dou2 = new double[(d.length / 2) + 1];
		}
		for (int i = 0; i < d.length / 2; i++) {
			dou1[i] = d[i];
			if (d.length % 3 == 0)
				dou2[i] = d[i + (d.length / 2)];
			else {
				dou2[i] = d[i + ((d.length / 2) + 1)];
			}

		}
		return (get(dou1) + get(dou2)) / 2;
	} get {
		if (d.length == 2)
			return (d[0] + d[1]) / 2;
		double dou1[] = new double[d.length / 2];
		double dou2[];
		if (d.length % 3 == 0)
			dou2 = new double[(d.length / 2)];
		else {
			dou2 = new double[(d.length / 2) + 1];
		}
		for (int i = 0; i < d.length / 2; i++) {
			dou1[i] = d[i];
			if (d.length % 3 == 0)
				dou2[i] = d[i + (d.length / 2)];
			else {
				dou2[i] = d[i + ((d.length / 2) + 1)];
			}

		}
		return (get(dou1) + get(dou2)) / 2;
	} if (d.length == 2)
			return (d[0] + d[1]) / 2; d.length == 2 d.length d d.length 2 return (d[0] + d[1]) / 2; (d[0] + d[1]) / 2 (d[0] + d[1]) d[0] d 0 d[1] d 1 2 double dou1[] = new double[d.length / 2]; dou1 new double[d.length / 2] d.length / 2 d.length d d.length 2 double dou2[]; dou2 if (d.length % 3 == 0)
			dou2 = new double[(d.length / 2)];
		else {
			dou2 = new double[(d.length / 2) + 1];
		} d.length % 3 == 0 d.length % 3 d.length d d.length 3 0 dou2 = new double[(d.length / 2)] dou2 new double[(d.length / 2)] (d.length / 2) d.length d d.length 2 {
			dou2 = new double[(d.length / 2) + 1];
		} dou2 = new double[(d.length / 2) + 1] dou2 new double[(d.length / 2) + 1] (d.length / 2) + 1 (d.length / 2) d.length d d.length 2 1 for (int i = 0; i < d.length / 2; i++) {
			dou1[i] = d[i];
			if (d.length % 3 == 0)
				dou2[i] = d[i + (d.length / 2)];
			else {
				dou2[i] = d[i + ((d.length / 2) + 1)];
			}

		} int i = 0; int i = 0; i 0 i < d.length / 2 i d.length / 2 d.length d d.length 2 i++ i++ i {
			dou1[i] = d[i];
			if (d.length % 3 == 0)
				dou2[i] = d[i + (d.length / 2)];
			else {
				dou2[i] = d[i + ((d.length / 2) + 1)];
			}

		} {
			dou1[i] = d[i];
			if (d.length % 3 == 0)
				dou2[i] = d[i + (d.length / 2)];
			else {
				dou2[i] = d[i + ((d.length / 2) + 1)];
			}

		} dou1[i] = d[i] dou1[i] dou1 i d[i] d i if (d.length % 3 == 0)
				dou2[i] = d[i + (d.length / 2)];
			else {
				dou2[i] = d[i + ((d.length / 2) + 1)];
			} d.length % 3 == 0 d.length % 3 d.length d d.length 3 0 dou2[i] = d[i + (d.length / 2)] dou2[i] dou2 i d[i + (d.length / 2)] d i + (d.length / 2) i (d.length / 2) d.length d d.length 2 {
				dou2[i] = d[i + ((d.length / 2) + 1)];
			} dou2[i] = d[i + ((d.length / 2) + 1)] dou2[i] dou2 i d[i + ((d.length / 2) + 1)] d i + ((d.length / 2) + 1) i ((d.length / 2) + 1) (d.length / 2) d.length d d.length 2 1 return (get(dou1) + get(dou2)) / 2; (get(dou1) + get(dou2)) / 2 (get(dou1) + get(dou2)) get(dou1) get dou1 get(dou2) get dou2 2 double d[] d public class Main {
	public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		String str[] = br.readLine().split(" ");

		double v[] = new double[n];
		ArrayList<ArrayList<Double>> list = new ArrayList<ArrayList<Double>>();
		for (int i = 0; i < n; i++) {
			v[i] = Double.parseDouble(str[i]);
		}

		Arrays.sort(v);
		double d = v[0];
		for (int i = 0; i < n; i++) {
			d = (d + v[i]) / 2;
		}
		System.out.println(d);
	}

	static double get(double d[]) {
		if (d.length == 2)
			return (d[0] + d[1]) / 2;
		double dou1[] = new double[d.length / 2];
		double dou2[];
		if (d.length % 3 == 0)
			dou2 = new double[(d.length / 2)];
		else {
			dou2 = new double[(d.length / 2) + 1];
		}
		for (int i = 0; i < d.length / 2; i++) {
			dou1[i] = d[i];
			if (d.length % 3 == 0)
				dou2[i] = d[i + (d.length / 2)];
			else {
				dou2[i] = d[i + ((d.length / 2) + 1)];
			}

		}
		return (get(dou1) + get(dou2)) / 2;
	}
} public class Main {
	public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		String str[] = br.readLine().split(" ");

		double v[] = new double[n];
		ArrayList<ArrayList<Double>> list = new ArrayList<ArrayList<Double>>();
		for (int i = 0; i < n; i++) {
			v[i] = Double.parseDouble(str[i]);
		}

		Arrays.sort(v);
		double d = v[0];
		for (int i = 0; i < n; i++) {
			d = (d + v[i]) / 2;
		}
		System.out.println(d);
	}

	static double get(double d[]) {
		if (d.length == 2)
			return (d[0] + d[1]) / 2;
		double dou1[] = new double[d.length / 2];
		double dou2[];
		if (d.length % 3 == 0)
			dou2 = new double[(d.length / 2)];
		else {
			dou2 = new double[(d.length / 2) + 1];
		}
		for (int i = 0; i < d.length / 2; i++) {
			dou1[i] = d[i];
			if (d.length % 3 == 0)
				dou2[i] = d[i + (d.length / 2)];
			else {
				dou2[i] = d[i + ((d.length / 2) + 1)];
			}

		}
		return (get(dou1) + get(dou2)) / 2;
	}
} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;

public class Main {
	public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		String str[] = br.readLine().split(" ");

		double v[] = new double[n];
		ArrayList<ArrayList<Double>> list = new ArrayList<ArrayList<Double>>();
		for (int i = 0; i < n; i++) {
			v[i] = Double.parseDouble(str[i]);
		}

		Arrays.sort(v);
		double d = v[0];
		for (int i = 0; i < n; i++) {
			d = (d + v[i]) / 2;
		}
		System.out.println(d);
	}

	static double get(double d[]) {
		if (d.length == 2)
			return (d[0] + d[1]) / 2;
		double dou1[] = new double[d.length / 2];
		double dou2[];
		if (d.length % 3 == 0)
			dou2 = new double[(d.length / 2)];
		else {
			dou2 = new double[(d.length / 2) + 1];
		}
		for (int i = 0; i < d.length / 2; i++) {
			dou1[i] = d[i];
			if (d.length % 3 == 0)
				dou2[i] = d[i + (d.length / 2)];
			else {
				dou2[i] = d[i + ((d.length / 2) + 1)];
			}

		}
		return (get(dou1) + get(dou2)) / 2;
	}
}