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].
import sys


def read_list():
    return list(map(int, input().split()))


def read_int():
    return int(input())


def println_list(array):
    for i in range(len(array) - 1):
        sys.stdout.write(str(array[i]) + " ")
    sys.stdout.write(str(array[-1]) + "\n")



extra_for_seconds = [0]

extra_sum = 0
for i in range(50):
    extra_sum += 2 ** i
    extra_for_seconds.append(extra_sum)


def min_2_pow(val):
    for i in range(len(extra_for_seconds)):
        if val <= extra_for_seconds[i]:
            return i


def solve(vals):
    last_seconds = 0
    previous = vals[0]
    new_v = []
    for v in vals:
        if v < previous:
            diff = previous - v
            secs = min_2_pow(diff)
            if secs > last_seconds:
                last_seconds = secs

        else:
            previous = v
        new_v.append(previous)
    return last_seconds


if __name__ == "__main__":
    results = []

    cycles = read_int()

    for cycle in range(cycles):
        n = read_int()
        vals = read_list()
        results.append(solve(vals))

    for r in results:
        print(r)
