Little Vasya has received a young builder’s kit. The kit consists of several wooden bars, the lengths of all of them are known. The bars can be put one on the top of the other if their lengths are the same.

Vasya wants to construct the minimal number of towers from the bars. Help Vasya to use the bars in the best way possible.

Input

The first line contains an integer N (1 ≤ N ≤ 1000) — the number of bars at Vasya’s disposal. The second line contains N space-separated integers li — the lengths of the bars. All the lengths are natural numbers not exceeding 1000.

Output

In one line output two numbers — the height of the largest tower and their total number. Remember that Vasya should use all the bars.

Examples

Input

3
1 2 3


Output

1 3


Input

4
6 5 6 7


Output

2 3
#El algoritmo se presta a parecer un poco Greedy debido a que se esta buscando la respuesta y beneficio inmediato mas rapido
#Ninguno de los otros algoritmos queda con la definicion para solucionar este problema
barras = int(input())
alturas = input().split()
#The count() method returns the number of elements with the specified value
#Aqui vemos cuantas veces se encuentra el numero de cierta barra en los valores introducidos sin necesidad de tomar en cuenta cuantas barras son
#Para ver el numero de veces que esta cierto numero se utiliza count y esa sera la torre mas alta, para poder encontrarlo se itera en un for
#for i in alturas:
 # veces = max(alturas.count(i))
#veces = max(vec)
veces = max(alturas.count(i) for i in alturas)#Se toma el numero mas alto con el max
#Para calcular las torres que se van a hacer es la longitud de los datos que no estan erpetidos, si solo uso len salen todos
#Set permita que no se repitan los numeros de un set, y los acomoda juntos
cantidad = len(set(alturas))
#Imprimir
print(veces, cantidad)

  			 					   		 	   	 			 	 		