진주 짝짓기

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

문제

베시가 생일 선물로 진주 $N$개를 받았습니다 ($2 \le N \le 100{,}000$, $N$은 항상 짝수). 각 진주는 $C$가지 색 중 하나로 칠해져 있으며 ($1 \le C \le N$), 색은 $1$번부터 $C$번까지 번호가 매겨져 있습니다. 색 $i$로 칠해진 진주는 정확히 $C_i$개이므로 $C_1 + C_2 + \cdots + C_C = N$입니다.

$N$이 짝수이므로, 베시는 모든 진주를 $N/2$개의 쌍으로 묶되 각 쌍의 두 진주가 서로 다른 색이 되도록 하려고 합니다. 주어지는 입력에 대해 이러한 짝짓기가 항상 존재함이 보장됩니다.

유효한 짝짓기가 여러 가지일 수 있으므로, 아래 출력 설명에서 정의하는 하나의 정해진(정규) 짝짓기를 출력해야 합니다.

입력

  • 첫째 줄: 공백으로 구분된 두 정수 $N$과 $C$.
  • 둘째 줄부터 $C+1$번째 줄까지: $i+1$번째 줄에는 색 $i$인 진주의 개수 $C_i$가 하나씩 주어집니다.

출력

진주를 색 번호가 작은 것부터 큰 순서로 나열합니다. 즉 색 $1$의 진주 $C_1$개를 먼저, 그다음 색 $2$의 진주 $C_2$개를, 이런 식으로 색 $C$까지 나열한 뒤, 이 순서대로 진주에 $1$번부터 $N$번까지 번호를 매깁니다.

$i = 1, 2, \dots, N/2$에 대해 $i$번 위치의 진주와 $i + N/2$번 위치의 진주를 짝지어 $N/2$개의 쌍을 만듭니다. 유효한 짝짓기가 항상 존재하므로, 이렇게 만든 각 쌍의 두 진주는 항상 서로 다른 색입니다.

총 $N/2$개의 줄을 출력합니다. $i$번째 줄에는 $i$번째 쌍의 두 색을, 더 작은 색을 먼저 하여 공백 하나로 구분해 출력합니다.

힌트

예시에서 색 $3$은 진주 $4$개에, 색 $1$과 색 $2$는 각각 진주 $2$개에 쓰였습니다. 정규 짝짓기에서는 색 $3$인 네 진주가 각각 색 $1$ 또는 색 $2$의 진주와 짝지어집니다.