EduBrick

E. Функция

2000 мс · 256 МБ · всё или ничего

Функция ff с целыми неотрицательными аргументами определена так:

  • f(0)=0f(0) = 0;
  • f(1)=1f(1) = 1;
  • f(2n)=f(n)f(2n) = f(n);
  • f(2n+1)=f(n)+f(n+1)f(2n+1) = f(n) + f(n+1).

Вычислите f(n)f(n).

Посмотрите, какие аргументы встречаются в вызовах: их гораздо меньше, чем самих вызовов. При n=1012n = 10^{12} различных аргументов всего 66, а вызовов без запоминания в худшем случае — 535 828 590, почти секунда работы. Запас есть, но нулевой: стоит границе подрасти, и решение без запоминания перестанет проходить. В домашней задаче это ровно так и происходит.

Формат ввода

Одна строка содержит число nn (0≤n≤10120 \le n \le 10^{12}).

Формат вывода

Одно число — f(n)f(n).

Примеры

ввод
10
вывод
3
ввод
1
вывод
1
Войдите, чтобы отправлять решения.