#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
#define mp make_pair
#define PI pair<ll,ll>
#define poly vector<ll>
#define mem(a) memset((a),0,sizeof(a))
#define For(i,l,r) for(int i=(int)(l);i<=(int)(r);i++)
#define Rep(i,r,l) for(int i=(int)(r);i>=(int)(l);i--)
#define pb push_back
#define fi first
#define se second
#define SZ(x) ((int)(x.size()))
inline char gc(){
    static char buf[100000],*p1=buf,*p2=buf;
    return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
#define gc getchar
inline ll read(){
	ll x = 0; char ch = gc(); bool positive = 1;
	for (; !isdigit(ch); ch = gc())	if (ch == '-')	positive = 0;
	for (; isdigit(ch); ch = gc())	x = x * 10 + ch - '0';
	return positive ? x : -x;
}
inline void write(ll a){
    if(a<0){
    	a=-a; putchar('-');
	}
    if(a>=10)write(a/10);
    putchar('0'+a%10);
}
inline void writeln(ll a){write(a); puts("");}
inline void wri(ll a){write(a); putchar(' ');}
ll rnd(){
	ull ans=0;
	For(i,0,4)ans=ans<<15^rand();
	return ans%((ull)1<<63);
}
const int N=205;
ll b[N],a[63];
char ch[N];
int main(){
	#ifdef Brollan
		freopen("1.in","r",stdin);
	#endif
	int T=read();
	while(T--){
		int n=read();
		For(i,1,n)b[i]=read();
		scanf("%s",ch+1);
		mem(a);
		int f=0;
		Rep(i,n,1){
			ll x=b[i];
			Rep(j,60,0)if(x>>j&1){
				if(a[j])x^=a[j];
				else{
					if(ch[i]=='0')a[j]=x;
					else f=1; break;
				}
			}
		}
		writeln(f);
	}
}

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;
typedef vector<ll> v1;
typedef vector<v1> v2;
typedef vector<v2> v3;

typedef unordered_map<ll, unordered_map<ll, ll>> graph;

const ll INF = 1ll << 50;
const ll mod = 1000000007;

ll n;

ll query(ll x){
    cout << x << endl;
    cout << flush;
    string s;
    cin >> s;
    if(s[0] == 'V') exit(0);
    if(s[0] == 'M') return 0;
    if(s[0] == 'F') return 1;
    return -1;
}

int main(){
    cin >> n;
    ll left_state = query(0);
    // ll right_state = query(n-1);
    ll l = 0;
    ll r = n;
    for(ll i = 0;i < 19;i++){
        ll x = (l+r)/2;
        cerr << i << " " << l << " " << r << " " << x << endl;

        ll ret = query(x);
        if((x % 2) == ((left_state+ret)%2)){
            l = x;
        }else{
            r = x;
        }
    }
}
