N=input() Mod=10**9+7 DP=[[[0]*100,[0]*100] for _ in range(len(N)+1)] DP[0][0][1]=1 for i,m in enumerate(N,1): m=int(m) Df,Dt=DP[i] Ef,Et=DP[i-1] #True -> True for s in range(1,10): for r in range(100): Dt[(r*s)%100]+=Et[r] #False -> True for s in range(1,m): for r in range(100): Dt[(r*s)%100]+=Ef[r] #False -> False if m>0: for r in range(100): Df[(r*m)%100]+=Ef[r] for r in range(100): Dt[r]%=Mod Df[r]%=Mod alpha=(DP[-1][0][0]+DP[-1][1][0])%Mod #======== DP=[[[0]*3 for _ in range(3)] for _ in range(len(N))] DP[0][0][0]=1 for i in range(1,len(N)): D=DP[i] E=DP[i-1] for s in range(1,10): p=q=0 if s==2 or s==6: p=1 elif s==4: p=2 elif s==8: p=3 if s==5: q=1 for t in range(3): for u in range(3): D[min(t+p,2)][min(u+q,2)]+=E[t][u] for t in range(3): for u in range(3): D[t][u]%=Mod beta=0 for i in range(1,len(N)): beta+=DP[i][2][2] print((alpha+beta)%Mod)