#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
constexpr int N = 11451;
int q;
int n;
long long a[N];
long long sum[N];
long long dp[N][2];
long long res[N];
long long highbit (long long num) {
num |= (num >> 1);
num |= (num >> 2);
num |= (num >> 4);
num |= (num >> 8);
num |= (num >> 16);
num |= (num >> 32);
if (num == 0) {
return (1ll << 62);
}
return num - (num >> 1);
}
long long xorCal (int i, int j) {
long long cal = sum[j] ^ sum[i - 1];
if (cal == 0) {
return (1ll << 62);
}
return cal;
}
int main () {
freopen ("dump.in", "r", stdin);
freopen ("dump.out", "w", stdout);
\
scanf ("%d", &q);
for (int index = 1; index <= q; index++) {
scanf ("%d", &n);
for (int i = 1; i <= n; i++) {
scanf ("%lld", &a[i]);
sum[i] = sum[i - 1] ^ a[i];
}
if (n == 1) {
printf ("1\n");
continue;
}
memset (dp, 0, sizeof (dp));
dp[1][0] = highbit (sum[n]);
dp[n][1] = highbit (sum[n]);
for (int len = n - 1; len >= 1; len--) {
for (int i = 1, j = i + len - 1; j <= n; i++, j++) {
long long cal = xorCal (i, j);
long long flag = ((cal | (1ll << 62)) & dp[i][0]) | ((cal | (1ll << 62)) & dp[j][1]);
if (flag) {
dp[i][0] |= highbit (cal);
dp[j][1] |= highbit (cal);
}
if (len == 1) {
res[i] = bool (flag);
}
}
}
for (int i = 1; i <= n; i++) {
printf ("%lld", res[i]);
}
printf ("\n");
}
return 0;
}