#include <bits/stdc++.h>
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define int long long
using namespace std;
const int _=1e6+7;
void solve() {
int n;
cin>>n;
vector<int> a(n+1),s(n+1);
FOR(i,1,n) {
cin>>a[i];
s[i]=s[i-1]^a[i];
}
vector dp(n+1,vector<bool>(n+1,0));
vector L(n+1,0ll),R=L;
int js=0;
for(int len=n;len>=1;--len) {
for(int l=1,r=len;r<=n;++l,++r) {
int x=s[r]^s[l-1];
x|=(1ll<<60);
dp[l][r]=(L[l]&x) | (R[r]&x);
if(len==n) dp[l][r]=1;
if(dp[l][r]==0) continue;
int val= (s[r]^s[l-1]) > 0 ? (1ll<<__lg((s[r]^s[l-1]))) : ((1ll<<60));
L[l]|=val;
R[r]|=val;
}
}
FOR(i,1,n) cout<<dp[i][i];
cout<<"\n";
}
signed main() {
#ifdef ONLINE_JUDGE
ios::sync_with_stdio(false);cin.tie(0);
#else
freopen("a.in","r",stdin);
#endif
int T;
cin>>T;
while(T--) {
solve();
}
return 0;
}
14B - Young Photographer | 143A - Help Vasilisa the Wise 2 |
320A - Magic Numbers | 1658A - Marin and Photoshoot |
514A - Chewbaсca and Number | 382A - Ksenia and Pan Scales |
734B - Anton and Digits | 1080A - Petya and Origami |
1642D - Repetitions Decoding | 1440A - Buy the String |
1658F - Juju and Binary String | 478A - Initial Bet |
981A - Antipalindrome | 365A - Good Number |
1204B - Mislove Has Lost an Array | 1409D - Decrease the Sum of Digits |
1476E - Pattern Matching | 1107A - Digits Sequence Dividing |
1348A - Phoenix and Balance | 1343B - Balanced Array |
1186A - Vus the Cossack and a Contest | 1494A - ABC String |
1606A - AB Balance | 1658C - Shinju and the Lost Permutation |
1547C - Pair Programming | 550A - Two Substrings |
797B - Odd sum | 1093A - Dice Rolling |
1360B - Honest Coach | 1399C - Boats Competition |