Little Vasya loves orange juice very much. That's why any food and drink in his kitchen necessarily contains orange juice. There are n drinks in his fridge, the volume fraction of orange juice in the i-th drink equals pi percent.

One day Vasya decided to make himself an orange cocktail. He took equal proportions of each of the n drinks and mixed them. Then he wondered, how much orange juice the cocktail has.

Find the volume fraction of orange juice in the final drink.

Input

The first input line contains a single integer n (1 ≤ n ≤ 100) — the number of orange-containing drinks in Vasya's fridge. The second line contains n integers pi (0 ≤ pi ≤ 100) — the volume fraction of orange juice in the i-th drink, in percent. The numbers are separated by a space.

Output

Print the volume fraction in percent of orange juice in Vasya's cocktail. The answer will be considered correct if the absolute or relative error does not exceed 10  - 4.

Examples

Input

3
50 50 100


Output

66.666666666667


Input

4
0 25 50 75


Output

37.500000000000

Note

Note to the first sample: let's assume that Vasya takes x milliliters of each drink from the fridge. Then the volume of pure juice in the cocktail will equal <image> milliliters. The total cocktail's volume equals 3·x milliliters, so the volume fraction of the juice in the cocktail equals <image>, that is, 66.(6) percent.
from collections import Counter
from itertools import combinations
import heapq
import math

MOD = 1000000007
MAX_SIZE = 1000001
isprime = [True] * MAX_SIZE 
prime = [] 
SPF = [None] * (MAX_SIZE) 


# def identity(*args):
#     if len(args) == 1:
#         return args[0]
#     return args


# def parsin(*, l=1, vpl=1, cf=identity, s=" "):
#     """ 
#         Can parse inputs usually used in competitive programming problems.
#         Arguments:
#         - l, as in "Lines", the number of lines to parse at once.
#         - vpl, as in "Values Per Line", the number of values to parse per line.
#         - cf, as in "Cast Function", the function to apply to each parsed element.
#         - s, as in "Separator", the string separating multiple values in the same
#         line.
#     """
#     if l == 1:
#         if vpl == 1:
#             return cf(input())
#         else:
#             return list(map(cf, input().split(s)))
#     else:
#         if vpl == 1:
#             return [cf(input()) for _ in range(l)]
#         else:
#             return [list(map(cf, input().split(s)))
#                     for _ in range(l)]


def binary_search(array, l, r, target):
    while l <= r:
        mid = l + (r - l) // 2;

        if array[mid] == target:
            return mid

        elif array[mid] < target:
            l = mid + 1

        else:
            r = mid - 1

    return -1


def pairs(array):
    return [pair for pair in combinations(array, 2)]


def sieve_of_eratosthenes(number: int):
    isprime[0] = isprime[1] = False
 
    for i in range(2, number):  
        if isprime[i] == True:  
            prime.append(i) 

            SPF[i] = i 

        j = 0
        while (j < len(prime) and
               i * prime[j] < number and
                   prime[j] <= SPF[i]):
          
            isprime[i * prime[j]] = False

            SPF[i * prime[j]] = prime[j]
              
            j += 1

    return prime


def fast_power(base, power):
    result = 1

    while power > 0:
        if power % 2 == 1:
            result = (result * base) % MOD

        power = power // 2
        base = (base * base) % MOD

    return result


def dfs(graph, start, visited = None): # Depth first search
    '''
        Here 'graph' represents the adjacency list
        of the graph, and 'start' represents the
        node from which to start
    '''
    if visited is None:
        visited = set()
    visited.add(start)
    for next in (graph[start] - visited):
        dfs(graph, next, visited)
    return visited


def dfs_paths(graph, start, goal):
    '''
        Returns all possible paths between a
        start vertex and a goal vertex
    '''
    stack = [(start, [start])]
    while (stack):
        (vertex, path) = stack.pop()
        for next in (graph[vertex] - set(path)):
            if next == goal:
                yield path + [next]
            else:
                stack.append((next, path + [next]))
    return stack


def bfs(graph, start): # Breadth first search
    visited, queue = set(), [start]
    while (queue):
        vertex = queue.pop(0)
        if (vertex not in visited):
            visited.add(vertex)
            queue.extend(graph[vertex] - visited)
    return visited


def bfs_paths(graph, start, goal):
    '''
        Returns all possible paths between a
        start vertex and a goal vertex, where
        the first path is the shortest path
    '''
    queue = [(start, [start])]
    while (queue):
        (vertex, path) = queue.pop(0)
        for next in (graph[vertex] - set(path)):
            if (next == goal):
                yield path + [next]
            else:
                queue.append((next, path + [next]))
    return queue


def inverse_permutation(permutation, size):
    invPerm = [0] * (size)
    
    for i in range(0, size) :
        invPerm[permutation[i] - 1] = str(i + 1)
    
    return invPerm
    


def two_d(n):
    return [[0] * n for _ in range(n)]


def uniques(array):
    counter = Counter(array).keys()

    return len(counter)


def n_common(array, n):
    counter = Counter(array)
    topN = counter.most_common(n)

    return topN


def n_lrgst(array, n):
    return heapq.nlargest(n, array)


def n_smllst(array, n):
    return heapq.nsmallest(n, array)


def multi_input():
    return map(int, input().split())


def _in():
    return input()


def solve():
    n = int(_in())

    sum = 0

    aa = list(multi_input())

    for x in range(len(aa)):
        sum = sum + (aa[x] / 100)

    return (sum / n) * 100


def main():
    print(solve())
 
 
if __name__ == "__main__":
    main()
