// #include "bits/stdc++.h"
// #pragma GCC optimize("Ofast,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
// using namespace std;
// using ll = long long int;
// mt19937_64 rng(chrono::high_resolution_clock::now().time_since_epoch().count());

// struct input_checker {
// 	string buffer;
// 	int pos;

// 	const string all = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
// 	const string number = "0123456789";
// 	const string upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// 	const string lower = "abcdefghijklmnopqrstuvwxyz";

// 	input_checker() {
// 		pos = 0;
// 		while (true) {
// 			int c = cin.get();
// 			if (c == -1) {
// 				break;
// 			}
// 			buffer.push_back((char) c);
// 		}
// 	}

// 	int nextDelimiter() {
// 		int now = pos;
// 		while (now < (int) buffer.size() && buffer[now] != ' ' && buffer[now] != '\n') {
// 			now++;
// 		}
// 		return now;
// 	}

// 	string readOne() {
// 		assert(pos < (int) buffer.size());
// 		int nxt = nextDelimiter();
// 		string res;
// 		while (pos < nxt) {
// 			res += buffer[pos];
// 			pos++;
// 		}
// 		// cerr << res << endl;
// 		return res;
// 	}

// 	string readString(int minl, int maxl, const string &pattern = "") {
// 		assert(minl <= maxl);
// 		string res = readOne();
// 		assert(minl <= (int) res.size());
// 		assert((int) res.size() <= maxl);
// 		for (int i = 0; i < (int) res.size(); i++) {
// 			assert(pattern.empty() || pattern.find(res[i]) != string::npos);
// 		}
// 		return res;
// 	}

// 	int readInt(int minv, int maxv) {
// 		assert(minv <= maxv);
// 		int res = stoi(readOne());
// 		assert(minv <= res);
// 		assert(res <= maxv);
// 		return res;
// 	}

// 	long long readLong(long long minv, long long maxv) {
// 		assert(minv <= maxv);
// 		long long res = stoll(readOne());
// 		assert(minv <= res);
// 		assert(res <= maxv);
// 		return res;
// 	}

// 	void readSpace() {
// 		assert((int) buffer.size() > pos);
// 		assert(buffer[pos] == ' ');
// 		pos++;
// 	}

// 	void readEoln() {
// 		assert((int) buffer.size() > pos);
// 		assert(buffer[pos] == '\n');
// 		pos++;
// 	}

// 	void readEof() {
// 		assert((int) buffer.size() == pos);
// 	}
// };

// int main()
// {
// 	ios::sync_with_stdio(false); cin.tie(0);

// 	vector<ll> v = {1};
// 	while (1) {
// 		v.push_back(1);
// 		for (int i = 0; i+1 < v.size(); ++i) v[i] += v[i+1];
// 		cout << v[0] << ' ';
// 		if (v[0] > 1e18) break;
// 	}
// 	int sz = v.size(), zero = 0, ops = 0;
// 	for (int i = 0; sz + zero > 1; ++i) {
// 		++ops;
// 		if (sz == 0) {
// 			v[0] = 0;
// 			break;
// 		}
// 		if (sz == 1) break;
// 		sort(v.begin(), v.end());
// 		vector<ll> w;
// 		int ptr = 0, mn = v[0], flag = zero > 0;
// 		if (zero) --zero;
// 		for (int j = 0; j + 1 < sz; ++j) {
// 			if (v[j] == v[j+1]) ++zero;
// 			else w.push_back(v[j+1] - v[j]);
// 		}
// 		if (flag) w.push_back(mn);
// 		v = w;
// 		sz = v.size();
// 	}
// 	cout << ops << '\n';
// }

#include "bits/stdc++.h"
// #pragma GCC optimize("Ofast,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
using ll = long long int;
mt19937_64 rng(chrono::high_resolution_clock::now().time_since_epoch().count());

int main()
{
	ios::sync_with_stdio(false); cin.tie(0);

	int t; cin >> t;
	while (t--) {
		int n; cin >> n;
		
		vector<ll> a(n);
		for (int i = 0; i < n; ++i) {
			cin >> a[i];
		}

		for (int iter = 0; iter < min(100, n-1); ++iter) {
			sort(begin(a), end(a));
			for (int i = 0; i+1 < a.size(); ++i) a[i] = a[i+1] - a[i];
			a.pop_back();
		}
		if (size(a) == 1) {
			cout << a[0] << '\n';
			continue;
		}
		int zeros = count(begin(a), end(a), 0);
		sort(rbegin(a), rend(a));
		while (!a.empty() and a.back() == 0) a.pop_back();
		for (int iter = 100; iter < n-1; ++iter) {
			if (zeros) {
				a.push_back(0);
				--zeros;
			}
			sort(begin(a), end(a));
			for (int i = 0; i+1 < a.size(); ++i) a[i] = a[i+1] - a[i];
			a.pop_back();

			zeros += count(begin(a), end(a), 0);
			sort(rbegin(a), rend(a));
			while (!a.empty() and a.back() == 0) a.pop_back();
		}
		if (zeros) a = {0};
		cout << a[0] << '\n';
	}
}