#だんだんなんでこの場合分けをしてるのかみたいなのがわからなくなってきた N=int(input()) C=list(map(int,input().split())) mod=10**9+7 if max(C)==N: ANS=0 for i in range(9): if C[i]: ANS=(pow(10,N,mod)-1)*pow(9,mod-2,mod)*(i+1)%mod print(ANS) exit() x=sum([C[i]*(i+1) for i in range(9)]) ANS=1 if sum([C[i-1] for i in range(1,10,2)])==0: ANS*=2 if sum([C[i-1] for i in range(4,10,4)])==N: ANS*=2 if x%3==0: ANS*=3 if x%9==0: ANS*=3 if x%27==0 and max([sum([C[i-1] for i in range(j+1,10,3)]) for j in range(3)])==N: ANS*=3 b=0 for i in range(9): b=(b*pow(10,C[i],7)+((pow(10,C[i],7)-1)*pow(9,5,7)*(i+1)))%7 F=[min(C[i],1) for i in range(9)] if b==0 and (F==[1,0,0,0,0,0,0,1,0] or F==[0,1,0,0,0,0,0,0,1]): ANS*=7 print(ANS)