MOD = 10**9 + 7 def count_compatible_placements(s): n = len(s) left_golds = [0] * n right_golds = [0] * n for i in range(n): if s[i] == 'o': left_golds[i] = right_golds[i] = 1 elif s[i] == '<': left_golds[i] = 1 elif s[i] == '>': right_golds[i] = 1 for i in range(1, n): if left_golds[i] == 0: left_golds[i] = left_golds[i-1] for i in range(n-2, -1, -1): if right_golds[i] == 0: right_golds[i] = right_golds[i+1] result = 0 for i in range(n): if s[i] == '.': result = (2 * result) % MOD elif s[i] == '=': result = (result + left_golds[i] * right_golds[i]) % MOD elif s[i] in '': result = (result + right_golds[i]) % MOD return result t = int(input()) for i in range(1, t+1): s = input().strip() result = count_compatible_placements(s) print(f"Case #{i}: {result}")