#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int M=60;
struct Basis{
	long long a[M+10];
	void clear()
	{
		memset(a,0,sizeof(a));
		return ;
	}
	void ins(long long x)
	{
		for(int i=M;i>=0;i--)
			if(x&(1ll<<i))
			{
				if(!a[i]){
					a[i]=x;
					return ;
				}
				x^=a[i];
			}
		return ;
	}
	bool check(long long x)
	{
		for(int i=M;i>=0;i--)
			if(x&(1ll<<i))
			{
				if(!a[i])return false;
				x^=a[i];
			}
		return true;
	}
}S;
long long a[210];
char str[210];
void solve()
{
	int n;scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%lld",&a[i]);
	scanf("%s",str+1);
	S.clear();
	for(int i=n;i>=1;i--)
		if(str[i]=='0')S.ins(a[i]);
		else if(!S.check(a[i])){
			printf("1\n");
			return ;
		}
	printf("0\n");
	return ;
}
int main()
{
	int t;scanf("%d",&t);
	while(t--)
		solve();
	return 0;
}