#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef vector vl; typedef vector vvl; typedef vector vc; typedef vector vs; typedef vector vb; typedef vector vd; typedef pair P; typedef vector

vpl; typedef tuple tapu; #define rep(i,n) for(ll i=0; i<(n); i++) #define REP(i,a,b) for(ll i=(a); i<(b); i++) #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() const int inf = 1<<30; const ll linf = 1LL<<62; const int MAX = 510000; ll dy[8] = {0,1,0,-1,1,-1,1,-1}; ll dx[8] = {1,0,-1,0,1,-1,-1,1}; const double pi = acos(-1); const double eps = 1e-7; template inline bool chmin(T1 &a,T2 b){ if(a>b){ a = b; return true; } else return false; } template inline bool chmax(T1 &a,T2 b){ if(a inline void print2(T1 a, T2 b){cout << a << " " << b << endl;} template inline void print3(T1 a, T2 b, T3 c){ cout << a << " " << b << " " << c << endl; } const int mod = 1e9 + 7; //const int mod = 998244353; void solve(){ ll n; cin >> n; string t; cin >> t; string s = "@@" + t + "@@"; REP(i,2,n+2){ if(s[i-2]=='o' && s[i+2]=='o'){ if(s[i-1]=='-'&&s[i]=='-'&&s[i+1]=='-'){ puts("O"); return; } } if(s[i-2]=='o'&&s[i-1]=='-'&&s[i]=='-'&&s[i+1]=='-'){ s[i+2] = 'o'; } if(s[i]=='x' || s[i]=='-') continue; if(s[i+1]=='o'){ if(s[i-1]=='o'){ puts("O"); return; } if((s[i-1]=='x'||s[i-1]=='@') && (s[i+2]=='x'||s[i+2]=='@')) continue; else{ puts("O"); return; } }else if(s[i+1]=='-'){ if(s[i+2]=='o'){ puts("O"); return; } if(s[i-1]=='x' || s[i-1]=='@'){ continue; } if(s[i-1]=='o'){ puts("O"); return; } if(s[i-2]=='-'||s[i+2]=='-'||s[i-2]=='o'||s[i+2]=='o'){ puts("O"); return; } } } puts("X"); } int main(){ ll t; cin >> t; while(t--){ solve(); } }