def has_three_consecutive_o(s): for i in range(len(s) - 2): if s[i] == 'o' and s[i+1] == 'o' and s[i+2] == 'o': return True return False def can_win_immediately(s): for i in range(len(s)): if s[i] == '-': new_s = list(s) new_s[i] = 'o' if has_three_consecutive_o(new_s): return True return False def find_max_consecutive_dash(s): max_len = 0 current_len = 0 for c in s: if c == '-': current_len += 1 if current_len > max_len: max_len = current_len else: current_len = 0 return max_len T = int(input()) for _ in range(T): N, S = input().split() N = int(N) S = S.strip() if has_three_consecutive_o(S): print("O") continue if can_win_immediately(S): print("O") continue count_missing = S.count('-') if count_missing == 0: print("X") continue X_remaining = count_missing // 2 max_dash_block = find_max_consecutive_dash(S) required_length = 2 * X_remaining + 1 if max_dash_block >= required_length and max_dash_block >= 3: print("O") else: print("X")