#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Sat Apr 15 15:52:17 2023 @author: benjamin """ import fileinput def is_valid(j,ch,i,last=""): c=ch[j:i+1] if last != "": c = c[:-1]+last if j != 0: c = "o"+c if j == 0: c="t"+c if len(c) <= 1: return True #print(c) if c[0] == c[-1] and c[0] == "o": for k in range(1,len(c)-1): if c[k] == "<" and k >= (len(c)-1)/2: return False if c[k] == ">" and k <= (len(c)-1)/2: return False if c[k] == "=" and k != (len(c)-1)/2: return False if c[k] == "o" : return False return True if c[0] == "o": for k in range(1,len(c)-1): if c[k] == ">" and k <= (len(c)-1)/2: return False if c[k] == "=" and k <= (len(c)-1)/2: return False if c[k] == "o" : return False if c[-1] == "o": for k in range(1,len(c)-1): if c[k] == "<": return False if c[k] == "=" : return False if c[k] == "o" : return False #print("congrats"+c) if c[0] != "o": for k in range(1,len(c)-1): if c[k] == "<" or c[k]=="=": return False return True def compute(strin): A =[] n= len(strin) for i in range(n): A+=[[]] A[i]+=[0] for j in range(n): A[i]+=[0] A[0][0] =1 #print(A) if strin[0] =="." or strin[0] =="o" : A[0][1]=1 if strin[0] =="o" : A[0][0] = 0 for i in range(1,n): if strin[i] == ".": for j in range(i+1): if is_valid(j,strin,i,last="X"): A[i][j] = A[i-1][j] for j in range(i+1): if is_valid(j,strin,i,last="o"): A[i][i+1] += A[i-1][j] elif strin[i] == "o": for j in range(i+1): if is_valid(j,strin,i): A[i][i+1] += A[i-1][j] else : for j in range(i+1): if is_valid(j,strin,i): A[i][j] = A[i-1][j] s=0 ind=strin.rfind(">") ind2 = strin.rfind("=") ind = max(ind,ind2) indinf =strin.find("<") if indinf == -1: A[n-1][0]=0 for j in range(ind+1,n+1): s+=A[n-1][j] #print(A) return s % 1000000007 T = input() l=0 for line in fileinput.input(): l+=1 s=compute(line) print("Case #"+str(l)+": "+str(s))