사탕 골고루 먹기

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

문제

Bob은 nn가지 다른 종류의 사탕을 여럿 가지고 있다. 사탕은 11번부터 nn번까지 번호가 붙어있고 ii번 사탕은 v_iv\_i개 갖고 있으며, m=_1inv_im = \sum\_{1 \le i \le n}{ v\_i} 를 사탕의 총 개수라 하자.

Bob은 오늘 자신이 가진 사탕 모두를 다 먹기로 했다. 단, 언제나 그렇듯 놀이를 하면서 먹기로 했다.

  1. 우선 같은 종류의 사탕을 연속해서 먹지 않기로 했다. 아무래도 골고루 먹는 편이 더 맛있을 것 같기 때문이다.
  2. 만약 위 조건을 만족하며 사탕을 먹을 수 있는 방법이 여럿 있다면, 사전순으로 가장 앞서는 방법으로 사탕을 먹기로 했다. 총 mm개의 사탕을 먹는 방법은 길이가 mm인 정수 배열로 표현 가능하며, 이 때 각 원소의 값은 사탕의 번호를 나타낸다. 이를테면 두 가지 방법 XXYY가 있을 때, 편의상 XXYY가 상기한대로 길이 mm인 정수 배열이라 하자. XXYY의 원소가 처음으로 다른 지점을 kk라 하면 (즉, 1i<k1 ≤ i < k에 대해서는 X\[i]=Y\[i]X\[i] = Y\[i] 이지만 X\[k]Y\[k]X\[k] \ne Y\[k] 인 경우), X\[k]<Y\[k]X\[k] < Y\[k] 이면 방법 XX가 방법 YY보다 사전순으로 앞서고 X\[k]>Y\[k]X\[k] > Y\[k] 이면 YYXX보다 앞선다. 이 때, 두 정수 X\[k]X\[k]Y\[k]Y\[k]는 대소비교를 하기에 예를 들어, X\[k]=10X\[k] = 10 이고 Y\[k]=5Y\[k] = 5인 경우 X\[k]>Y\[k]X\[k] > Y\[k] 이다.

예를 들어 n=2n = 2, v=\[2,2]v = \[2, 2]라 하자. 이 때, 11번 조건을 만족하며 사탕을 모두 먹는 방법은 총 22가지가 있다.

  • 방법 11: \[1,2,1,2]\[1, 2, 1, 2]
  • 방법 22: \[2,1,2,1]\[2, 1, 2, 1]

이 두 가지 방법 중 방법 11이 사전순으로 앞선다.

다른 예로, n=3n = 3, v=\[2,1,4]v = \[2, 1, 4]라 하자. 이 때, 11번 조건을 만족하며 사탕을 모두 먹는 방법은 총 33가지가 있다 (사전순으로 정렬되어있다).

  • 방법 11: \[3,1,3,1,3,2,3]\[3, 1, 3, 1, 3, 2, 3]
  • 방법 22: \[3,1,3,2,3,1,3]\[3, 1, 3, 2, 3, 1, 3]
  • 방법 33: \[3,2,3,1,3,1,3]\[3, 2, 3, 1, 3, 1, 3]

입력으로 nnv_iv\_i 값들이 주어졌을 때, Bob이 위 조건을 만족하며 모든 사탕을 다 먹을 수 있는지 알아보자. 만약 가능하다면, 그 중 사전순으로 가장 앞서는 방법을 나타내는 길이 mm인 정수 배열을 ZZ라 했을 때, _1im(iZ\[i])\sum\_{1 \le i \le m} {(i \cdot Z\[i])} 값을 구해보자 단, 이 값이 너무 커질 수 있으므로 987,654,323987\\,654\\,323로 나눈 나머지를 출력한다.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스는 두 줄에 걸쳐 주어진다.

첫째 줄에 사탕의 종류 nn이 주어지며 둘째 줄에 nn개의 정수가 공백으로 구분되어 주어진다.

출력

각 테스트 케이스의 정답을 각 줄에 출력한다.

만약 조건을 만족하며 사탕을 다 먹을 수 없는 경우 "IMPOSSIBLE"을 출력한다 (따옴표 제외).