말더듬이 없는 수열

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

문제

문자로 이루어진 수열을 생각한다. 수열 x1,x2,,xnx_1, x_2, \dots, x_n 에서 어떤 연속한 블록 바로 뒤에 그것과 똑같은 블록이 이어지면, 이 수열은 말더듬(stammer) 을 포함한다고 한다. 정확히는, 1i<j1 \le i < j 이고 2ji1n2j - i - 1 \le n 인 두 첨자 ii, jj 가 존재하여

xi=xj,  xi+1=xj+1,  ,  xj1=x2ji1x_{i} = x_{j},\; x_{i+1} = x_{j+1},\; \dots,\; x_{j-1} = x_{2j-i-1}

이 성립하는 경우를 말한다. 다시 말해, 비어 있지 않은 어떤 단어 ww 에 대해 wwww 꼴의 부분 문자열(제곱)을 포함하는 경우이다. 이러한 반복 블록이 하나도 없는 수열을 말더듬이 없는 수열이라고 부른다.

길이가 nn 인 말더듬이 없는 수열을, 되도록 적은 종류의 문자만으로 만들고자 한다.

몇 가지 사실:

  • 문자를 한 종류만 쓰면 말더듬이 없는 수열의 길이는 최대 11 이다. aaaa 자체가 이미 말더듬이기 때문이다.
  • 문자를 두 종류(aa, bb) 쓰면 말더듬이 없는 수열의 최대 길이는 33 이며, 그러한 수열은 정확히 abaabababbab 뿐이다. 예를 들어 bababbabab 은 말더듬이 없는 수열이 아니다(블록 baba 와 블록 abab 가 각각 반복된다).
  • 문자를 세 종류 쓰면 모든 길이에 대해 말더듬이 없는 수열이 존재한다. 예를 들어 abcababcab 은 길이가 55 인 말더듬이 없는 수열이다.

필요한 문자 종류의 최소 개수를 구하여라.

입력

표준 입력의 첫째 줄에 양의 정수 nn (1n10,000,0001 \le n \le 10{,}000{,}000) 이 주어진다. 만들고자 하는 수열의 길이이다.

출력

길이가 nn 인 말더듬이 없는 수열에 반드시 나타나야 하는 서로 다른 문자의 최소 개수 kk 를 한 줄에 출력한다.