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")