← Home
write a go solution for Description:
Let mathsfAND denote the bitwise AND operation, and mathsfOR denote the bitwise OR operation.

You are given an array a of length n and a non-negative integer k. You can perform at most k operations on the array of the following type:

- Select an index i (1<=i<=n) and replace a_i with a_i mathsfOR 2^j where j is any integer between 0 and 30 inclusive. In other words, in an operation you can choose an index i (1<=i<=n) and set the j-th bit of a_i to 1 (0<=j<=30).

Output the maximum possible value of a_1 mathsfAND a_2 mathsfAND ... mathsfAND a_n after performing at most k operations.

Input Format:
The first line of the input contains a single integer t (1<=t<=100) — the number of test cases. The description of test cases follows.

The first line of each test case contains the integers n and k (1<=n<=2*10^5, 0<=k<=10^9).

Then a single line follows, containing n integers describing the arrays a (0<=a_i<2^31).

It is guaranteed that the sum of n over all test cases does not exceed 2*10^5.

Output Format:
For each test case, output a single line containing the maximum possible mathsfAND value of a_1 mathsfAND a_2 mathsfAND ... mathsfAND a_n after performing at most k operations.

Note:
For the first test case, we can set the bit 1 (2^1) of the last 2 elements using the 2 operations, thus obtaining the array [2, 3, 3], which has mathsfAND value equal to 2.

For the second test case, we can't perform any operations so the answer is just the mathsfAND of the whole array which is 4.. Output only the code with no comments, explanation, or additional text.