트리에서 찾는 신비한 알파벳 두 개

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

문제

높이가 nn인 트리가 있고, 각 노드에 정수가 하나씩 들어 있다. 레벨 kk (1kn1 \le k \le n)에는 노드가 kk개 있고, 각 노드는 바로 아래 레벨에서 이웃한 두 노드와 이어진다. 이 두 노드가 그 노드의 자식이다. 레벨 nn의 노드에는 자식이 없다. 레벨 안쪽에 있는 노드는 부모가 둘일 수도 있다. 트리의 모양은 아래 그림과 같다.

    1
   / \
  4   5
 / \ / \
7   8   9

루트에서 시작해 매 단계 자식 중 하나로 내려가고 마지막 레벨에서 멈춘다. 이렇게 만드는 경로 중 노드 값의 합이 가장 큰 경로를 고른다. 위 그림에서는 1+5+9=151 + 5 + 9 = 15인 경로다. 이어져 있지 않은 노드끼리는 더할 수 없어서 5+75 + 7은 경로가 아니다.

고른 경로에서 수를 두 개 구한다. 첫 번째 수는 경로 위 값을 각각 제곱해서 더한 값이고, 두 번째 수는 경로 위 값을 그대로 더한 값이다. 위 그림에서 첫 번째 수는 12+52+92=1071^2 + 5^2 + 9^2 = 107, 두 번째 수는 1+5+9=151 + 5 + 9 = 15이다.

합이 가장 큰 경로가 여러 개면 그중 제곱의 합이 가장 큰 경로를 고른다.

두 수는 각각 'a'부터 'z'까지의 소문자 하나로 바꾼다. 00이 'a', 2525가 'z'다. 알파벳은 26개뿐이라 2525보다 큰 수는 26으로 나눈 나머지에 해당하는 알파벳을 쓴다. 그래서 00, 2626, 5252는 모두 'a'다. 위 그림에서 107107은 'd', 1515는 'p'가 된다.

트리가 주어졌을 때 신비한 알파벳 두 개를 찾는 프로그램을 작성하시오.

입력

첫째 줄에 트리의 높이 nn이 주어진다. (0<n<1000 < n < 100)

둘째 줄에 트리의 값이 레벨 1부터 레벨 nn까지 차례대로, 같은 레벨 안에서는 왼쪽부터 순서대로 공백으로 구분되어 주어진다. 값은 모두 0<i<1000 < i < 100인 정수이고, 개수는 n(n+1)2\frac{n(n+1)}{2}개다.

출력

첫째 줄에 위 규칙으로 구한 두 수를 첫 번째 수, 두 번째 수 순서로 공백 하나를 사이에 두고 출력한다.

둘째 줄에 두 수를 바꾼 알파벳 두 개를 같은 순서로 붙여서 출력한다.