Goodbye, MatKor Cup!

시간 제한0.1초메모리 제한1024 MB

요약
1분에 한 칸씩 골라 처리하는 동안 다른 칸의 운영진은 그 칸에서 멀어지는 쪽으로 한 칸씩 이동하고, 처리한 칸은 영구히 닫혀 기차가 둘로 나뉜다. 모든 운영진을 처리하는 최소 시간과 그 순서를 구한다.
난이도

보통10점 중 7점

유형
그리디, 분할 정복, 재귀, 구현
정답자
아직 제출이 없습니다

문제

MatKor Cup은 난이도가 높고 참가자들을 전혀 배려하지 않은 문제들이 출제되는 것으로 악명이 높다.

이런 대회가 77번이나 개최된 것을 본 당신은 더 이상 참지 않기로 했다.

이 소식을 들은 NN명의 MatKor Cup 운영진들은 기차를 타고 도망가기로 했다. 기차는 11번 칸부터 NN번 칸까지 NN량의 칸이 일렬로 연결되어, 이웃한 칸으로 이동할 수 있다. 처음에는 각 칸에 한 명의 운영진이 타고 있다.

기차가 출발하기 전, 당신은 11분에 한 칸씩 골라 그 칸에 있는 운영진을 모두 처리할 수 있다. 또한 해당 칸은 영구적으로 폐쇄되며, 그 칸을 기준으로 양쪽의 기차 칸들은 분리되어 서로 이동할 수 없다. 또한 당신이 고른 칸의 운영진들을 처리하는 동안, 기차의 다른 칸에 있는 모든 운영진들은 소리를 듣고 그 칸과 멀어지는 방향으로 한 칸씩 이동한다. 이때 더 이상 움직일 수 없는 운영진들은 그대로 있는다.

당신은 최대한 빨리 모든 운영진을 처리하고 싶다. NN이 주어질 때 모든 운영진을 최소의 시간으로 처리해 보자. 한번 처리한 칸은 다시 선택할 수 없다.

입력

첫 번째 줄에 정수 N(1≤N≤105)N(1\le N\le 10^5)이 주어진다.

출력

첫 번째 줄에 모든 운영진을 처리하기 위해 최소 몇 분이 걸리는지를 출력한다.

두 번째 줄에 처리할 기차 칸의 번호를 순서대로 공백으로 구분하여 출력한다.

힌트

이 문제를 푼 여러분들이 모든 운영진을 처리해버린 바람에 다음 MatKor Cup은 열릴 수 없게 되었다.

예제4

  1. 예제 1

    입력
    1
    
    예상 출력
    1
    1
    
  2. 예제 2

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

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

    입력
    4
    
    예상 출력
    3
    2 1 4