NE的俄罗斯方块
题号:NC21787
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

NE写了一个俄罗斯方块玩,而且和一样,NE打算加入新机制
其中一个超级强力的道具就是,翻倍消除器,其特性如下:
初始有n列非空砖块,消除器内的计数器为K = 0,高度依次为h1,h2,... hn,有效操作次数为t = 0
  1.消除器可以多次使用,每次可以选择任意个hi> = 2k-的砖块列,使其高度减少2k
  2.每次使用后,无论选择多少列(包括0),计数器增加1,K = K + 1
  3.若选取的个数cntj> = 1则记为一次有效操作次数,t = t + 1
  4.若不再存在hi> = 2k-,结束
NE邀请了赤耳来玩,聪明的赤耳每次使用翻倍消除器的时候,都用最少的有效操作次数,将所有列的砖块数量之和尽可能的减少了
NE想知道,对于某一个局面Q,赤耳究竟进行了几次有效操作?

输入描述:

第一行为正整数M表示使用的测试组数M <= 10
接下来M组游戏局面:
每组第一行输入一个正整数N表示含有砖块的列的数量N <= 100000
接下来一行为N个正整数hi表示第i 个非零列的高度 hi <= 2 20 $

输出描述:

输出M行
每行一个整数,表示启动消除器后的有效操作次数
示例1

输入

复制
2
2 
5 1
3
1 2 3 

输出

复制
2
2