신성한 약수

아직 제출이 없습니다시간 제한3초메모리 제한128 MB

문제

N>1N > 1인 정수가 주어진다. 정수 d>1d > 1에 대해, dkNd^k \mid N이면서 dk+1Nd^{k+1} \nmid N을 만족하는 양의 정수 kk가 존재할 때 "ddNN의 중복도가 kk인 약수"라고 한다. 예를 들어 N=48=243N = 48 = 2^4 \cdot 3의 경우 22는 중복도가 44인 약수, 33은 중복도가 11인 약수, 44는 중복도가 22인 약수, 66은 중복도가 11인 약수이다.

ddNN의 중복도가 kk인 약수이면서 NN의 모든 약수 중 kk보다 큰 중복도를 가지는 약수가 없을 때, ddNN의 신성한 약수라고 한다. 다시 말해 신성한 약수는 NN의 모든 약수가 가지는 중복도의 최댓값을 달성하는 약수이다. 예를 들어 4848의 신성한 약수는 22 (중복도 44) 하나뿐이고, 66의 신성한 약수는 22, 33, 66 (각각 중복도 11)이다.

NN의 모든 약수가 가지는 중복도의 최댓값 kkNN의 신성한 약수의 개수를 구하라.

입력

NN은 다소 특이한 방식으로 주어진다. 첫 번째 줄에는 정수 nn (1n6001 \le n \le 600)이 주어진다. 두 번째 줄에는 nn개의 정수 a1,a2,,ana_1, a_2, \ldots, a_n (2ai10182 \le a_i \le 10^{18})이 공백 하나로 구분되어 주어진다. 이들은 N=a1a2anN = a_1 \cdot a_2 \cdot \cdots \cdot a_n을 뜻한다.

출력

두 줄을 출력한다. 첫 번째 줄에는 NN의 어떤 약수 d>1d > 1dkNd^k \mid N을 만족하도록 하는 가장 큰 정수 kk를 출력한다. 두 번째 줄에는 NN의 신성한 약수의 개수, 즉 중복도가 kk인 약수의 개수를 출력한다. 이 값은 매우 커질 수 있으므로 정확한 정수로 출력한다.