어떤 정수 수열 X의 가치는 다음과 같이 정의된다:
길이가 N인 정수 수열 A가 주어진다. A를 원하는 대로 재배열하여 수열의 가치를 최대화하고 싶다. 재배열하여 만들 수 있는 수열의 가치의 최댓값과 이 때의 수열을 찾아보자.
감소/증가하지 않는 부분 수열이 무엇인지 잘 모르는 친구들은 친절한 정휘가 준비한 아래 정의를 읽어보도록 하자.
어떤 수가 두 부분 수열 P와 Q 모두에 포함되도록 P와 Q를 선택할 수 있으며, 둘 모두에 포함된 수는 P의 원소의 합을 구할 때와 Q의 원소의 합을 구할 때 모두 더해진다.
첫째 줄에 N이 주어진다. (1≤N≤1,000)
둘째 줄에 정수 A_1,A_2,⋯,A_N이 공백으로 구분되어 주어진다. (1≤A_i≤N)
A를 재배열하여 만들 수 있는 수열의 가치의 최댓값을 첫 번째 줄에 출력한다.
그 때의 수열 B_1,B_2,⋯,B_N을 두 번째 줄에 공백으로 구분하여 출력한다. 가능한 수열이 여러 가지라면 그 중 아무거나 출력한다.