/*
这是关于第K大数最小比较次数的一个题
一个序列 : 数两两比较 大的进入下一层 形成一个堆 这样 得到最大数至少需要n-1次
寻找第二大的数 只需要比较那些 与最大数比较过的数 也就是每层有一个数 (除去最后一层)
需要(int)log2(n-1)次 。
*/
#include<cstdio>
#include<cmath>int main()
{
int n;
while(scanf("%d",&n)==1)
{
printf("%d\n",n+int(log(n-1)/log(2))-1);
}
return 0;
}