높이가 n인 트리가 있고, 각 노드에 정수가 하나씩 들어 있다. 레벨 k (1≤k≤n)에는 노드가 k개 있고, 각 노드는 바로 아래 레벨에서 이웃한 두 노드와 이어진다. 이 두 노드가 그 노드의 자식이다. 레벨 n의 노드에는 자식이 없다. 레벨 안쪽에 있는 노드는 부모가 둘일 수도 있다. 트리의 모양은 아래 그림과 같다.
1
/ \
4 5
/ \ / \
7 8 9
루트에서 시작해 매 단계 자식 중 하나로 내려가고 마지막 레벨에서 멈춘다. 이렇게 만드는 경로 중 노드 값의 합이 가장 큰 경로를 고른다. 위 그림에서는 1+5+9=15인 경로다. 이어져 있지 않은 노드끼리는 더할 수 없어서 5+7은 경로가 아니다.
고른 경로에서 수를 두 개 구한다. 첫 번째 수는 경로 위 값을 각각 제곱해서 더한 값이고, 두 번째 수는 경로 위 값을 그대로 더한 값이다. 위 그림에서 첫 번째 수는 12+52+92=107, 두 번째 수는 1+5+9=15이다.
합이 가장 큰 경로가 여러 개면 그중 제곱의 합이 가장 큰 경로를 고른다.
두 수는 각각 'a'부터 'z'까지의 소문자 하나로 바꾼다. 0이 'a', 25가 'z'다. 알파벳은 26개뿐이라 25보다 큰 수는 26으로 나눈 나머지에 해당하는 알파벳을 쓴다. 그래서 0, 26, 52는 모두 'a'다. 위 그림에서 107은 'd', 15는 'p'가 된다.
트리가 주어졌을 때 신비한 알파벳 두 개를 찾는 프로그램을 작성하시오.
첫째 줄에 트리의 높이 n이 주어진다. (0<n<100)
둘째 줄에 트리의 값이 레벨 1부터 레벨 n까지 차례대로, 같은 레벨 안에서는 왼쪽부터 순서대로 공백으로 구분되어 주어진다. 값은 모두 0<i<100인 정수이고, 개수는 2n(n+1)개다.
첫째 줄에 위 규칙으로 구한 두 수를 첫 번째 수, 두 번째 수 순서로 공백 하나를 사이에 두고 출력한다.
둘째 줄에 두 수를 바꾼 알파벳 두 개를 같은 순서로 붙여서 출력한다.