2^20
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

我似乎曾记忆化搜寻过这个地方……

长途是ACM大陆一只快乐的小男孩。今天,他在cf战场上历练,遭遇了T波丧尸
长途快被丧尸咬死啦!幸好他手中的两把武器都还有20^{20^{20^{20}}}枚子弹,一枚子弹可以击中一个丧尸
  • 武器1——【AC】:每次射击可以发射一枚子弹
  • 武器2——【AK-47】:每次射击可以同时朝当前每个丧尸均发射一枚子弹
然而,丧尸有种特殊的能力,每次击中并不会死掉,反而会立刻复制出一个新的丧尸

长途有点绝望。幸好他发现当前这波的所有丧尸都处在一个特殊的圆盘上!这个圆盘被称为圆神,当丧尸的数量是2^{20}的倍数时,可以选择启动这个装置,消灭当前这波的全部丧尸!!!
值得注意的是,一共有T大波丧尸,只有当一波的丧尸被全部消灭后,下一波的丧尸才会出现,并且手中武器的子弹数也会恢复
情况很紧急,长途请你帮帮他。对于每一波丧尸,最少需要射击多少次才能消灭这一波的所有丧尸。若消耗完所有的子弹都无法消灭这一波的所有丧尸,请输出-1

输入描述:

第一行包含一个整数T,表示长途遭遇了\ T\ (1\le T\le10^5)\波丧尸
对于每波丧尸:
仅输入一行,包含一个正整数\ n\ (1\le n\le10^9),表示当前这波的丧尸数

输出描述:

对于每波丧尸:
仅输出一行,若消耗完所有的子弹都无法消灭这一波的所有丧尸,输出-1;否则输出消灭当前这波的所有丧尸所需要的最少射击次数
示例1

输入

复制
3
1048575
1048576
1

输出

复制
1
0
20