만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

베라의 등산로 만들기

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

요약
K를 주어진 탐욕적 분해 규칙에 따라 블록으로 나누고, 두 변소 경로가 정확히 K개인 연결된 트레일 네트워크를 출력한다.
난이도

쉬움10점 중 3점

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

문제

등산을 좋아하는 베라가 자기만의 등산로 망을 만들려고 한다. 이 망에는 11번부터 VV번까지 번호가 붙은 장소 VV개와 양방향 등산로 EE개가 있고, ii번 등산로는 서로 다른 두 장소 aia_i와 bib_i를 직접 잇는다. 망은 연결되어 있어야 하므로 어느 두 장소 사이든 등산로를 따라 오갈 수 있어야 한다. 같은 두 장소를 직접 잇는 등산로가 여러 개 있어도 된다.

a<ba < b인 두 장소 aa와 bb는, 같은 등산로를 두 번 넘게 지나지 않으면서 aa에서 bb까지 갔다가 다시 aa로 돌아올 수 있으면 아름답게 연결된 쌍이 된다. 베라는 아름답게 연결된 쌍이 정확히 KK개인 망을 아름다운 망이라고 부른다.

망이 너무 커지면 안 되므로 1≤V,E≤50001 \le V, E \le 5000을 만족해야 한다.

거의 모든 KK에 대해 아름다운 망은 여러 가지가 있으므로, 이 문제는 그중 하나를 정해서 묻는다. 어떤 망을 출력해야 하는지는 출력 단락에 정확히 적혀 있다.

입력

첫째 줄에 정수 KK가 주어진다. (1≤K≤1071 \le K \le 10^7)

출력

아래 규칙대로 망을 만들어 출력한다. 다른 답은 인정하지 않는다.

먼저 KK를 블록으로 나눈다. 빈 목록에서 시작해 K>0K > 0인 동안 다음을 반복한다. m≥2m \ge 2이면서 m(m−1)/2≤Km(m-1)/2 \le K인 가장 큰 정수 mm을 골라 목록 뒤에 붙이고, KK를 K−m(m−1)/2K - m(m-1)/2로 바꾼다. 이렇게 얻은 목록을 m1,m2,…,mtm_1, m_2, \dots, m_t라 하고 V=m1+m2+⋯+mtV = m_1 + m_2 + \dots + m_t로 둔다.

장소에 11번부터 VV번까지 번호를 붙이고 각 블록에 연속한 번호 구간을 준다. 블록 11은 11번부터 m1m_1번까지, 블록 22는 그다음 m2m_2개를 차지하는 식이다. 블록 jj의 첫 장소를 sjs_j, 마지막 장소를 eje_j라고 하자.

출력의 첫째 줄에는 VV와 E=V+t−1E = V + t - 1을 공백 하나로 구분해 출력한다. 이어지는 EE개의 줄에는 등산로 하나의 두 장소를 공백 하나로 구분해, 아래에 적힌 순서대로 출력한다.

j=1,2,…,tj = 1, 2, \dots, t 순서로 블록 jj의 등산로를 출력한다.

  • mj=2m_j = 2이면 "sjs_j eje_j" 줄을 두 번 출력한다.
  • mj≥3m_j \ge 3이면 등산로 (sj,sj+1)(s_j, s_j + 1), (sj+1,sj+2)(s_j + 1, s_j + 2), ... , (ej−1,ej)(e_j - 1, e_j)와 마지막으로 (ej,sj)(e_j, s_j)까지 mjm_j개를 한 줄에 하나씩, 각 줄에 앞쪽 장소를 먼저 적어 출력한다.

블록 tt개의 등산로를 모두 출력한 다음, 블록을 잇는 등산로 t−1t - 1개를 출력한다. j=2,3,…,tj = 2, 3, \dots, t 순서로 "ej−1e_{j-1} sjs_j" 줄을 출력하면 된다.

이 망은 연결되어 있고, 아름답게 연결된 쌍이 정확히 KK개이며, 입력으로 가능한 모든 KK에 대해 V≤4587V \le 4587과 E≤4592E \le 4592를 만족한다.

힌트

첫 번째 예제는 K=2K = 2라서 블록이 m1=2m_1 = 2, m2=2m_2 = 2로 나뉜다. 장소 11과 22를 등산로 두 개가 잇고, 장소 33과 44를 등산로 두 개가 이으며, 장소 22와 33 사이의 등산로가 두 블록을 연결한다. 아름답게 연결된 쌍은 (1,2)(1, 2)와 (3,4)(3, 4) 두 개다.

두 번째 예제는 K=6K = 6이라서 블록이 m1=4m_1 = 4 하나뿐이고, 망은 장소 네 개로 이루어진 사이클이 된다. 장소 쌍 여섯 개가 모두 아름답게 연결된 쌍이다.

예제2

  1. 예제 1

    입력
    2
    
    예상 출력
    4 5
    1 2
    1 2
    3 4
    3 4
    2 3
    
  2. 예제 2

    입력
    6
    
    예상 출력
    4 4
    1 2
    2 3
    3 4
    4 1