def count_compatible_placements(markings): n = len(markings) dp = [0] * n if markings[0] == "o" or markings[0] == "=": dp[0] = 2 for i in range(1, n): if markings[i] == ".": dp[i] = dp[i-1] elif markings[i] == "o": dp[i] = (dp[i-1] * 2) % MOD elif markings[i] == "<": dp[i] = 0 elif markings[i] == ">": dp[i] = 0 elif markings[i] == "=": dp[i] = dp[i-1] dp[i] %= MOD ans = sum(dp[i] for i in range(n) if markings[i] != "<") % MOD return ans t = int(input()) for case in range(1, t+1): markings = input().strip() ans = count_compatible_placements(markings) print(f"Case #{case}: {ans}")