#abc153d. [abc153_d]Caracal vs Monster

[abc153_d]Caracal vs Monster

问题描述

Caracal正在与一个怪物战斗。

怪物的生命值为HH

Caracal可以选择一只怪物进行攻击。当攻击一只怪物时,根据该怪物的生命值,会发生以下情况:

  • 如果怪物的生命值为11,则它的生命值减少至00
  • 如果怪物的生命值XX大于11,那么该怪物消失。然后,出现两只新的怪物,每只怪物的生命值为lfloorX/2rfloor\\lfloor X/2 \\rfloor。(其中,lfloorrrfloor\\lfloor r \\rfloor表示不超过rr的最大整数。)

当所有现有怪物的生命值变为00或更低时,Caracal获胜。

找到Caracal在获胜之前需要发动的最小攻击次数。

约束条件

  • 1H10121 \leq H \leq 10^{12}
  • 输入中的所有值都是整数。

输入

从标准输入读入数据,格式如下:

HH


输出

找到Caracal在获胜之前需要发动的最小攻击次数。


示例输入 1

2

示例输出 1

3

当Caracal攻击初始的怪物时,它消失,然后出现两只生命值为11的新怪物。

然后,Caracal可以分别攻击这两只新怪物一次,总共攻击三次就可以获胜。


示例输入 2

4

示例输出 2

7

示例输入 3

1000000000000

示例输出 3

1099511627775