mod = 10**9 + 7 n = int(input()) l = list(map(int, input().split())) r = list(map(int, input().split())) d = list(map(int, input().split())) def calc(l, r, di, dj): #(10^l <= a < 10^r or a=0) and f(di+f(a))=djを満たすaの数 if dj == 0: if di == 0: #di==dj==0のとき、a=0の1通りのみ return 1 else: #di!=dj==0のとき、条件を満たすaは存在しない return 0 else: #aの総数は(10^r - 10^l)/9で一般化される #di==djの時、a=0の1通りが加算される ans_r = pow(10, r, mod) * pow(9, mod - 2, mod)#逆元です ans_l = pow(10, l, mod) * pow(9, mod - 2, mod) ans=(ans_r + (mod - ans_l)) % mod if di == dj: ans += 1 ans %= mod#これ必要ですか? return ans ans = calc(l[0], r[0], 0, d[0]) for i in range(1, n): ans *= calc(l[i], r[i], d[i - 1], d[i]) ans %= mod print(ans)