from copy import * mod=10**9+7 def init(N,node,A,unit,func): n=1 while n1: y=y>>1 node[y-1]=node[-3](node[(y<<1)-1],node[y<<1]) def query(node,l,r): x,y=l,r z=node[-1]-1 rr=deepcopy(node[-2]) rl=deepcopy(node[-2]) while True: if x==y: return node[-3](rl,rr) if x&1: rl=node[-3](rl,node[x+z]) x+=1 if y&1: rr=node[-3](node[y+z-1],rr) if z==0: return node[-3](rl,rr) x>>=1 y>>=1 z>>=1 N,K=map(int,input().split()) A=list(map(int,input().split())) S=sorted(set(A)) D=dict() for i in range(len(S)): D[S[i]]=i for i in range(N): A[i]=D[A[i]] S=input() DP=[1]*N for i in range(K): seg=[] init(N,seg,[],0,lambda x,y:x+y) for j in range(N): v=DP[j] if S[i]=='<': DP[j]=query(seg,0,A[j])%mod else: DP[j]=query(seg,A[j]+1,N)%mod upd(seg,A[j],v) print(sum(DP)%mod)