만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

거듭제곱 탑 2: 더 어려운 거듭제곱

시간 제한2초메모리 제한1024 MB

요약
거듭제곱 탑 형태로 주어진 정수 M개를 작은 값부터 정렬하고, 값이 같으면 입력 순서를 유지하여 원래 표기 그대로 출력합니다.
난이도

보통10점 중 6점

유형
정렬, 수학, 구현
정답자
아직 제출이 없습니다

문제

참고: 원래는 실제 대회에 이 문제를 내려고 했지만, 내일 풀 좋은 문제가 이미 많고 이 문제는 너무 쉬워서 예행연습(dress rehearsal)에 먼저 공개하기로 했습니다.

이 문제에서는 수를 정렬하는 방법을 다룹니다. 대부분 정렬 알고리즘을 한 번쯤 작성해 봤을 것입니다. 혹시 모르니 간단히 말하면, 작은 수가 앞에 오고 큰 수가 뒤에 오도록 수를 재배열하는 것입니다.

정수가 여러 개 주어집니다. 같은 정수들을 정렬된 순서로 출력하세요. 함정이 무엇이냐고요? 값이 같은 수가 있다면, 입력에서 먼저 나온 수가 출력에서도 먼저 나와야 합니다. 그 밖에는 특별한 것이 없습니다. 작은 수부터 큰 수 순으로 정렬하면 됩니다.

정수는 꽤 클 수 있습니다. 입력을 짧게 하려고 각 정수는 다음과 같은 '거듭제곱 탑' 형태로 주어집니다.

a1a2…ana_1^{a_2^{\dots^{a_n}}}

여기서 1≤a1,a2,…,an≤1001 \le a_1, a_2, \dots, a_n \le 100이고 1≤n≤1001 \le n \le 100입니다. 계산은 위에서 아래로 진행하므로 a1a2a3=a1(a2a3)a_1^{a_2^{a_3}} = a_1^{(a_2^{a_3})}입니다.

아직 다 안 끝났나요? 그럼 어서 시작하세요!

입력

각 테스트 케이스의 첫 줄에는 그 케이스에 포함된 정수의 개수 M이 주어집니다 (1 ≤ M ≤ 100). 이어지는 M개의 줄에는 정수가 한 줄에 하나씩 주어집니다. 각 정수는 위에서 설명한 형태로 적히며, 거듭제곱은 캐럿(^)으로 나타내고 공백은 없습니다. 각 정수의 표현에는 1개 이상 100개 이하의 수가 있고, 각 수는 1 이상 100 이하의 정수입니다.

출력

각 테스트 케이스마다 케이스 번호를 출력한 뒤, 정렬된 정수 목록을 원래 형태로 한 줄에 하나씩 출력합니다.

예제1

  1. 예제 1

    입력
    4
    2^2^2
    3^4
    15
    9^2
    
    예상 출력
    Case 1:
    15
    2^2^2
    3^4
    9^2