아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

숫자 카드

시간 제한1초메모리 제한512 MB

요약
1부터 9까지의 숫자 카드 개수가 주어질 때(6과 9는 회전하면 구분되지 않음), 왼쪽과 오른쪽 끝에서 번갈아 카드를 뽑아 만들 수 있는 수가 가장 커지도록 카드를 배열한다.
난이도

보통10점 중 7점

유형
그리디, 수학, 구현, 배열
정답자
아직 제출이 없습니다

문제

Albert는 총 n장의 숫자 카드를 가지고 있다. 각 숫자 카드에는 1부터 9까지의 숫자가 하나씩 적혀 있고, 6과 9는 카드를 회전하면 구분할 수 없기 때문에 Albert가 임의로 회전할 수 있다.

구체적으로, xix_i를 ii가 적힌 숫자 카드의 개수라 하자. 따라서 x1+x2+⋯+x9=nx_1 + x_2 + \cdots + x_9 = n 이다.

요즘 Albert는 집에서 혼자 카드 놀이를 하는데, 아래와 같은 방법으로 진행한다.

  • 먼저, n장의 카드를 임의의 순서로 좌우로 나열한다. 이 때, Albert 마음대로 6이 적힌 카드나 9가 적힌 카드는 회전할 수 있다.
  • 이제 n장의 카드를 아래 규칙에 따라 한 장씩 가져와서 큰 수를 만든다.
    • 처음에는 가장 좌측에 놓인 카드를 가져온다.
    • 다음에는 가장 우측에 놓인 카드를 가져와서 이전에 가져온 카드 우측에 둔다.
    • 이후로 계속해서 좌측과 우측에서 번갈아 카드를 가져와 그 직전에 가져온 카드 우측에 둔다.

n장의 카드를 모두 가져오고 나면 길이가 n인 정수가 만들어지는데, Albert는 이 수의 값이 가장 크게 되도록 하고 싶다.

예를 들어 n = 5이고 Albert가 가진 카드가 [6, 6, 7, 8, 9]라 하자. 아래와 같이 세 가지 다른 방법으로 다섯 장의 카드를 좌측부터 우측으로 나열한 경우, Albert가 규칙대로 게임을 진행하여 만들 수 있는 수는 아래와 같다.

  • 6 6 7 8 9 순으로 나열한 경우: 가장 좌측의 6, 가장 우측의 9, 좌측에서 두 번째에 놓인 6, 우측에서 두 번째에 놓인 8, 그리고 중간에 놓인 7이 적힌 카드를 순서대로 가져와 69687을 만들 수 있다.
  • 9 9 7 8 9 순으로 나열한 경우: 가장 좌측의 9, 가장 우측의 9, 좌측에서 두 번째에 놓인 9, 우측에서 두 번째에 놓인 8, 그리고 중간에 놓인 7이 적힌 카드를 순서대로 가져와 99987을 만들 수 있다.
  • 9 7 9 8 9 순으로 나열한 경우: 가장 좌측의 9, 가장 우측의 9, 좌측에서 두 번째에 놓인 7, 우측에서 두 번째에 놓인 8, 그리고 중간에 놓인 9가 적힌 카드를 순서대로 가져와 99789를 만들 수 있다.
  • 이 예제의 경우, 99987이 Albert가 만들 수 있는 가장 큰 수이다.

입력으로 n장의 숫자 카드가 주어졌을 때, 맨 처음 Albert가 카드를 어떻게 나열해야 가장 큰 수를 만들 수 있는지 찾아서 알려주자.

입력

첫 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스는 한 줄에 총 9개의 정수가 (x1,x2,⋯ ,x9)(x_1, x_2, \cdots, x_9) 공백으로 구분되어 주어진다.

출력

각 테스트 케이스에 대해 n장의 카드를 어떻게 나열해야 하는지 (좌측부터 우측으로) 한 줄에 걸쳐 출력한다.

제한

  • 1≤T≤501 \le T \le 50
  • 2≤n≤1,0002 \le n \le 1{,}000 (n=x1+x2+⋯+x9n = x_1 + x_2 + \cdots + x_9)
  • 0≤xi≤1,0000 \le x_i \le 1{,}000 (1≤i≤91 \le i \le 9)

예제1

  1. 예제 1

    입력
    4
    0 0 0 0 0 2 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 3 0 0 0 0 0 0
    1 2 2 0 0 0 0 0 0
    
    예상 출력
    9 9 7 8 9
    9 8 5 3 1 2 4 7 9
    3 3 1 2 3
    3 2 1 2 3