1 /*
2 n个商店,每个商店的数值是ai,能提升的能力值为ai的二进制形式的结尾0的个数
3 购买序列的ai必须升序,问顺序访问商店最大提升能力值为多少
4 动态规划,定义dp[n]为以购买第n个商店的升级为结尾的购买方案的提升最大值
5 所以dp[0]=0;
6 dp[i]=max(dp[i],dp[j]+k[i]);
7 */
8 #include <bits/stdc++.h>
9 using namespace std;
10 int pow2[32];
11 int dp[110];
12 void init()
13 {
14 pow2[0]=1;
15 for(int i=1;i<20;i++)
16 pow2[i]=pow2[i-1]*2;
17 }
18 int main()
19 {
20 int n;
21 init();
22 scanf("%d",&n);
23 while(n--)
24 {
25 memset(dp,0,sizeof(dp));
26 int m,t[110],k[110];
27 scanf("%d",&m);
28 for(int i=0;i<m;i++)
29 {
30 scanf("%d",&t[i]);
31
32 for(int j=17;j>=0;j--)
33 if(t[i]%pow2[j]==0)
34 {
35 k[i]=j;
36 dp[i]=j;
37 break;
38 }
39 }
40 for(int i=1;i<m;i++)
41 {
42 for(int j=0;j<i;j++)
43 if(t[i]>t[j])
44 dp[i]=max(dp[i],dp[j]+k[i]);
45 }
46 int ans=0;
47 for(int i=0;i<m;i++)
48 if(ans<dp[i]) ans=dp[i];
49 printf("%d\n",ans);
50 }
51 }