#include using namespace std; const long long MOD = 1000000007; int gcd(int a, int b){ if (b == 0){ return a; } else { return gcd(b, a % b); } } long long modpow(long long a, long long b, long long mod){ long long ans = 1; while (b > 0){ if (b % 2 == 1){ ans *= a; ans %= MOD; } a *= a; a %= mod; b /= 2; } return ans; } long long gp(long long n, long long mod){ if (n == 0){ return 0; } if (n % 2 == 1){ return (gp(n - 1, mod) * 10 + 1) % mod; } else { return gp(n / 2, mod) * (modpow(10, n / 2, mod) + 1) % mod; } } int main(){ int N; cin >> N; vector c(10); c[0] = 0; for (int i = 1; i < 10; i++){ cin >> c[i]; } vector id; for (int i = 1; i < 10; i++){ if (c[i] > 0){ id.push_back(i); } } int cnt = id.size(); if (cnt == 1){ for (int i = 1; i < 10; i++){ if (c[i] > 0){ cout << gp(N, MOD) * i % MOD << endl; } } } else { int g = 0; for (int i = 0; i < cnt - 1; i++){ g = gcd(g, (id[i + 1] - id[i]) * 9); } long long a = 0; for (int i = 1; i < 10; i++){ a *= modpow(10, c[i], g); a += gp(c[i], g) * i; a %= g; } cout << gcd(g, a) << endl; } }