#! python3 # (prev * 10 + nextdigit) % 225 # only need to keep track of prev % x, where 10 * x % 225 = 0 (so prev * 10 % 225 and (prev + x) * 10 % 225 are the same) # also need x % 10 == 0, so we can get the last digit # x = 90 is smallest value that works X = 90 mod = 1000000007 # create matrix mat = [[0 for i in range(X)] for j in range(X)] for prevmod in range(X): prevdig = prevmod % 10 for nextdig in range(10): if nextdig == prevdig: continue mat[prevmod][(prevmod*10+nextdig)%X] += 1 # some methods for exponentiating matrices def mult(a,b): ret = [[0 for i in range(X)] for j in range(X)] for i in range(X): for j in range(X): for k in range(X): ret[i][j] = (ret[i][j] + a[i][k] * b[k][j]) % mod return ret def exp(mat,e): if e == 1: return mat if e % 2 == 1: return mult(mat, exp(mat, e - 1)) tmp = mult(mat,mat) return exp(tmp, e//2) # actual solution below a,b = map(int, input().split()) if a == 1: print(1 if b < 10 else 0) elif a == 2: print(1 if b < 100 and b % 11 != 0 and b >= 10 else 0) else: mat = exp(mat, a - 2) ans = 0 for startdig in range(1,10): for startmod in range(X): ways = mat[startdig][startmod] for enddig in range(10): endmod = (startmod * 10 + enddig) % 225 if enddig != (startmod % 10) and endmod == b: ans += ways print(ans % mod) # brute = 0 # for i in range(1000000): # if len(str(i)) == a and i % 225 == b: # s = str(i) # for j in range(1,len(s)): # if s[j] == s[j-1]: # break # else: # brute += 1 # print(brute)