You have an array a of length n. For every positive integer x you are going to perform the following operation during the x-th second:

  * Select some distinct indices i_{1}, i_{2}, …, i_{k} which are between 1 and n inclusive, and add 2^{x-1} to each corresponding position of a. Formally, a_{i_{j}} := a_{i_{j}} + 2^{x-1} for j = 1, 2, …, k. Note that you are allowed to not select any indices at all.



You have to make a nondecreasing as fast as possible. Find the smallest number T such that you can make the array nondecreasing after at most T seconds.

Array a is nondecreasing if and only if a_{1} ≤ a_{2} ≤ … ≤ a_{n}.

You have to answer t independent test cases.

Input

The first line contains a single integer t (1 ≤ t ≤ 10^{4}) — the number of test cases.

The first line of each test case contains single integer n (1 ≤ n ≤ 10^{5}) — the length of array a. It is guaranteed that the sum of values of n over all test cases in the input does not exceed 10^{5}.

The second line of each test case contains n integers a_{1}, a_{2}, …, a_{n} (-10^{9} ≤ a_{i} ≤ 10^{9}).

Output

For each test case, print the minimum number of seconds in which you can make a nondecreasing.

Example

Input


3
4
1 7 6 5
5
1 2 3 4 5
2
0 -4


Output


2
0
3

Note

In the first test case, if you select indices 3, 4 at the 1-st second and 4 at the 2-nd second, then a will become [1, 7, 7, 8]. There are some other possible ways to make a nondecreasing in 2 seconds, but you can't do it faster.

In the second test case, a is already nondecreasing, so answer is 0.

In the third test case, if you do nothing at first 2 seconds and select index 2 at the 3-rd second, a will become [0, 0].
//package codeforces._633;

import java.io.*;
import java.util.StringTokenizer;

public class _85_C {

    public static void main (String[] args) throws Exception {

//        String s = "3\n" +
//                "4\n" +
//                "1 7 6 5\n" +
//                "5\n" +
//                "1 2 3 4 5\n" +
//                "2\n" +
//                "0 -4";

        String s = "6\n" +
                "3\n" +
                "1000000000 0 -1000000000\n" +
                "1\n" +
                "6\n" +
                "2\n" +
                "-1000000000 1000000000\n" +
                "2\n" +
                "1000000000 -1000000000\n" +
                "2\n" +
                "1000000000 1000000000\n" +
                "2\n" +
                "-1000000000 -1000000000";

//                StringBuffer sb = new StringBuffer("150000\n");
//        Random r = new Random();
//        for (int i=0; i<150000; ++i) {
//            sb.append("2\n");
//            long C1 = Math.abs(r.nextLong()/10000000);
//            long C2 = Math.abs(r.nextLong()/10000000);
//            sb.append(C1 + " " + C2 + "\n");
//            C1 = Math.abs(r.nextLong()/10000000);
//            C2 = Math.abs(r.nextLong()/10000000);
//            sb.append(C1 + " " + C2 + "\n");
//        }
//        String s = sb.toString();
//        System.out.println(s);

//        br = new BufferedReader(new StringReader(s));
        br = new BufferedReader(new InputStreamReader(System.in));
        bw = new BufferedWriter(new OutputStreamWriter(System.out));

        long time = System.currentTimeMillis();

        rl(); int T = nin();
        for (int t=0; t<T; ++t) {
            rl(); int n = nin();

            int[] a = new int[n];
            rl();
            a[0] = nin();
            int max = 0;
            for (int i=1; i<n; ++i) {
                a[i] = nin();
                int diff  = a[i-1] - a[i];
                if (diff>0) {
                    int add = 1;
                    for (int j=1; j<=32 && diff>0; ++j) {
                        if (diff%2==1) {
                            max = Math.max(max, j);
                            a[i] +=add;
                        }
                        add<<=1;
                        diff>>=1;
                    }
                }
            }

            bw.write(Long.toString(max));
            bw.newLine();
        }

        bw.flush();

//        System.out.println("time: " + (System.currentTimeMillis()-time));
    }


    static BufferedReader br;
    static BufferedWriter bw;
    static StringTokenizer st;
    static void rl() throws Exception{
        st = new StringTokenizer(br.readLine());
    }
    static long nlo(){
        return Long.parseLong(st.nextToken());
    }
    static int nin(){
        return Integer.parseInt(st.nextToken());
    }
    /*private static void te(){
      }*/
    static double ndo(){
        return Double.parseDouble(st.nextToken());
    }
    static char[] nca(){
        return st.nextToken().toCharArray();
    }
}