팀 훈련
시간 제한1초메모리 제한2048 MB
서로 다른 실력 값 3n개가 주어질 때, 남은 목록에서 연속한 세 명을 1, 2, 3팀에 차례로 배정하고 팀 합을 사전식으로 최대화하여 세 팀의 합을 출력합니다.
문제
오늘 아미르는 카자흐스탄 출신 코치 티모와 다시 훈련을 했다.
오늘 훈련에는 학생이 명 있었다. 학생 의 실력은 이다. 모든 학생의 실력은 서로 다르다.
티모는 보통 학생을 세 명씩 한 팀으로 나눈다. 그러나 오늘은 방식을 바꿔 학생을 세 팀으로 나누기로 했다. 먼저 목록에서 연속한 학생 세 명을 고른다. 첫 번째 학생은 1팀, 두 번째 학생은 2팀, 세 번째 학생은 3팀에 배정한다. 그다음 이 세 학생을 목록에서 지운다. 모든 학생이 배정될 때까지 이 과정을 반복한다.
팀의 실력은 팀원 실력의 합이다. 티모는 1팀의 실력을 최대로 만들려고 한다. 1팀의 실력을 최대로 만드는 방법이 여러 개라면 2팀의 실력을 최대로 만든다. 그래도 여러 개라면 3팀의 실력을 최대로 만든다.
예를 들어 목록이 이라고 하자. 티모가 먼저 를 고르고 다음에 을 고르면 팀의 실력은 이다. 먼저 를 고르고 다음에 을 고르면 팀의 실력은 이 되며, 기준에 따르면 이쪽 배정이 더 낫다.
티모가 학생을 최적으로 나눴을 때 각 팀의 실력을 구하라.
입력
첫 줄에 테스트 케이스의 개수 ()가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.
첫 줄에 학생 수 ()이 주어진다.
둘째 줄에 서로 다른 정수 개 ()이 주어진다. 이는 학생들의 실력이다.
모든 테스트 케이스의 합은 를 넘지 않는다.
출력
최적으로 나눴을 때 1팀, 2팀, 3팀의 실력을 공백으로 구분해 한 줄에 출력한다.