#include using namespace std; #define rep(i,j,n) for(int i=(int)(j);i<(int)(n);i++) #define REP(i,j,n) for(int i=(int)(j);i<=(int)(n);i++) #define MOD 1000000007 #define int long long #define ALL(a) (a).begin(),(a).end() #define vi vector #define vii vector #define pii pair #define priq priority_queue #define disup(A,key) distance(A.begin(),upper_bound(ALL(A),(int)(key))) #define dislow(A,key) distance(A.begin(),lower_bound(ALL(A),(int)(key))) #define tii tuple #define Priq priority_queue> #define pb push_back #define mp make_pair #define INF (1ll<<60) pii func(int N,string S){ vi A(N); int cnt=0; rep(i,0,N){ A[i]=cnt; if(S[i]=='o') cnt++; else cnt=0; } cnt=0; REP(j,1,N){ int i=N-j; A[i]=max(cnt,A[i]); if(S[i]=='o') cnt++; else cnt=0; } vector B; rep(i,0,N){ if(S[i]=='-') B.pb(mp(A[i],i)); } sort(ALL(B),greater()); return B[0]; } signed main(){ int T; cin>>T; rep(_,0,T){ int N; string S; cin>>N>>S; int cnt=0,sum=0; bool flag=1; rep(i,0,N){ if(S[i]=='o'){ cnt++; if(cnt>=3) flag=0; } else{ cnt=0; if(S[i]=='-') sum++; } } char ans='X'; if(flag){ rep(i,0,sum){ auto p=func(N,S); if(i%2==0&&p.first==2){ ans='O'; break; } if(i%2==0) S[p.second]='o'; else S[p.second]='x'; } } else ans='O'; cout<