'''
백준 2217번 - 로프

k개의 로프를 사용하여 중량이 w인 물체를 들어올린다.
로프를 병렬로 연결하면 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다.
각 로프는 들 수 있는 물체의 중량이 서로 다를 수도 있다.

이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성.
모든 로프를 사용해야 할 필요는 없으며 임의로 몇개의 로프를 골라서 사용해도 된다.

첫째줄은 N(로프의 개수)를 입력받는다.
다음 N개의 줄에는 각 로프가 버틸 수 있는 최대 중량이 주어진다.(10,000 이하)

풀이
먼저 로프의 갯수를 입력받아야 하므로 n은 정수값을 입력받는다.
로프가 버틸 수 있는 최대 무게를 입력받는다.

예를 들어 로프의 갯수가 2개, 최대 하중이 10, 15일 때 
첫번째: (최대 하중을 버틸수 있는 로프) * 1
두번째: (두번째로 많은 하중을 버틸 수 있는 로프) * 2
...

이중에서 최댓값을 결과로 출력하면 된다.

배열 정렬을 큰것부터 * 1, * 2...으로 해나가야 하므로 reverse=True.

결과 배열 중에서 가장 큰값(최대 하중)을 구해내기 위해 max함수를 이용한다.
'''

n = int(input())
weight = []
result = []

for i in range(n):
    weight.append(int(input()))

weight.sort(reverse=True)

for j in range(len(weight)):
    result.append(weight[j] * (j+1))

print(max(result))