만드는 중입니다

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

식당 줄

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

요약
두 명으로 시작한 줄이 n명이 되도록 단계 수 k의 최댓값과 각 단계의 a_i 값을 구합니다.
난이도

보통10점 중 6점

유형
정수론, 수학
정답자
아직 제출이 없습니다

문제

은하 선의 학교 식당을 관리하는 이노켄티는 질서를 무척 중요하게 여긴다. 하지만 매일 아주 긴 쉬는 시간에 학생들이 점심을 먹으러 몰려가면 식당은 곧 혼란에 빠진다.

처음에는 가장 재빠른 학생 두 명이 줄을 선다. 이후 줄은 kk단계에 걸쳐 늘어난다. ii단계(1≤i≤k1 \leq i \leq k)에서는 줄에 서 있는 이웃한 학생 사이의 빈틈마다 aia_i명이 끼어든다. 예를 들어 k=2k = 2, a1=3a_1 = 3, a2=1a_2 = 1이면 첫 단계 후 줄에는 5명이, 두 번째 단계 후에는 9명이 선다.

이노켄티는 이 혼란을 바로잡고 싶어 한다. 그가 아는 것은 줄의 최종 학생 수 nn뿐이고, 줄이 어떻게 늘어났는지 알아내려 한다. nn만으로는 과정이 하나로 정해지지 않으므로, 단계 수 kk의 최댓값과 그에 맞는 수열 aia_i(1≤i≤k1 \leq i \leq k)를 구하려 한다. aia_i는 각 단계에서 빈틈마다 끼어든 사람 수다.

입력

정수 nn이 하나 주어진다 (3≤n≤264−13 \leq n \leq 2^{64} - 1). 이는 줄에 선 최종 학생 수다.

출력

첫째 줄에 단계 수의 최댓값 kk를 출력한다. 둘째 줄에는 공백으로 구분한 양의 정수 a1,…,aka_1, \dots, a_k를 출력한다. 최대 길이의 수열이 여러 개라면 그중 하나를 출력한다.

힌트

첫 번째 예시에서는 가능성이 하나뿐이다. 첫 단계에서 두 명이 끼어든다. 두 번째 예시에서는 과정이 하나로 정해지지 않는다. 문제 본문의 경우는 k=2k = 2인 한 가지 진행이고, 단계 수의 최댓값은 3이다.

예제2

  1. 예제 1

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

    입력
    9
    
    예상 출력
    3
    1 1 1