MOD = 10**9 + 7 def solve_case(case_num, markings): n = len(markings) left_gold = [False] * n right_gold = [False] * n any_gold = False for i in range(n): if markings[i] == '<': left_gold[i] = True any_gold = True elif markings[i] == '>': right_gold[i] = True any_gold = True elif markings[i] == 'o': left_gold[i] = True right_gold[i] = True any_gold = True count = 0 for i in range(2**n): valid = True for j in range(n): if markings[j] == '<' and not ((i >> j) & 1): valid = False break elif markings[j] == '>' and not ((i >> j) & 1): valid = False break elif markings[j] == 'o' and ((i >> j) & 1) != left_gold[j]: valid = False break elif markings[j] == '=' and ((i >> j) & 1) != (left_gold[j] or right_gold[j]): valid = False break if valid and any_gold: count += 1 print(f"Case #{case_num}: {count % MOD}") t = int(input()) for i in range(1, t+1): markings = input().strip() solve_case(i, markings)