There are n block towers in a row, where tower i has a height of a_i. You're part of a building crew, and you want to make the buildings look as nice as possible. In a single day, you can perform the following operation:

  * Choose two indices i and j (1 ≤ i, j ≤ n; i ≠ j), and move a block from tower i to tower j. This essentially decreases a_i by 1 and increases a_j by 1. 



You think the ugliness of the buildings is the height difference between the tallest and shortest buildings. Formally, the ugliness is defined as max(a)-min(a). 

What's the minimum possible ugliness you can achieve, after any number of days?

Input

The first line contains one integer t (1 ≤ t ≤ 1000) — the number of test cases. Then t cases follow.

The first line of each test case contains one integer n (2 ≤ n ≤ 100) — the number of buildings.

The second line of each test case contains n space separated integers a_1, a_2, …, a_n (1 ≤ a_i ≤ 10^7) — the heights of the buildings.

Output

For each test case, output a single integer — the minimum possible ugliness of the buildings.

Example

Input


3
3
10 10 10
4
3 2 1 2
5
1 2 3 1 5


Output


0
0
1

Note

In the first test case, the ugliness is already 0.

In the second test case, you should do one operation, with i = 1 and j = 3. The new heights will now be [2, 2, 2, 2], with an ugliness of 0.

In the third test case, you may do three operations: 

  1. with i = 3 and j = 1. The new array will now be [2, 2, 2, 1, 5], 
  2. with i = 5 and j = 4. The new array will now be [2, 2, 2, 2, 4], 
  3. with i = 5 and j = 3. The new array will now be [2, 2, 3, 2, 3]. 

The resulting ugliness is 1. It can be proven that this is the minimum possible ugliness for this test.

import java.io.*;
import java.util.*;
import java.lang.*;
import static java.lang.Math.*;

// Sachin_2961 submission //
public class Codeforces {


    static void solve() {

        int n = fs.nInt();
        long[]ar = new long[n];
        for(int i=0;i<n;i++){
            ar[i] = fs.nInt();
        }
        sort(ar);
        while (true){
            long max = ar[n-1],min = ar[0];
            int i1 = 0,i2 =n-1;
            for(int i=0;i<n;i++){
                if(ar[i] > max){
                    max = ar[i];
                    i1 = i;
                }
                if(ar[i] < min){
                    min = ar[i];
                    i2 = i;
                }
            }
            if(abs(max-min) <= 1){
                break;
            }
            long avg = (max + min)/2;
            ar[i1] = avg;
            ar[i2] = avg;
        }
        long max = ar[n-1],min = ar[0];
        for(int i=0;i<n;i++){
            max = max(ar[i],max);
            min = min(ar[i],min);
        }
        long diff = max-min;
        out.println(diff);
    }

    static class PairI{
        int f,s,w;
        PairI(int f,int s,int w){
            this.f = f;
            this.s = s;
            this.w = w;
        }

    }
    static class Pair{
        int f,s;
        Pair(int f,int s) {
            this.f = f;
            this.s = s;
        }
    }
    static boolean multipleTestCase = true;
    static FastScanner fs;
    static PrintWriter out;
    public static void main(String[]args){
        try{
            out = new PrintWriter(System.out);
            fs = new FastScanner();
            int tc = multipleTestCase?fs.nInt():1;
            while (tc-->0)solve();
            out.flush();
            out.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    static class FastScanner {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st=new StringTokenizer("");
        String n() {
            while (!st.hasMoreTokens())
                try {
                    st=new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            return st.nextToken();
        }
        String Line()
        {
            String str = "";
            try
            {
                str = br.readLine();
            }catch (IOException e)
            {
                e.printStackTrace();
            }
            return str;
        }
        int nInt() {return Integer.parseInt(n()); }
        long nLong() {return Long.parseLong(n());}
        double nDouble(){return Double.parseDouble(n());}
        int[]aI(int n){
            int[]ar = new int[n];
            for(int i=0;i<n;i++)
                ar[i] = nInt();
            return ar;
        }
    }
    public static void sort(int[] arr){
        ArrayList<Integer> ls = new ArrayList<>();
        for(int x: arr)
            ls.add(x);
        Collections.sort(ls);
        for(int i=0; i < arr.length; i++)
            arr[i] = ls.get(i);
    }
    public static void sort(long[] arr){
        ArrayList<Long> ls = new ArrayList<>();
        for(long x: arr)
            ls.add(x);
        Collections.sort(ls);
        for(int i=0; i < arr.length; i++)
            arr[i] = ls.get(i);
    }
}