#include #include using namespace std; using mint = atcoder::modint1000000007; void fast_io() { ios_base::sync_with_stdio(false); cin.tie(nullptr); } const int M = 1 << 20; mint fact[M], inv[M]; void init() { fact[0] = 1; for (int i = 1; i < M; i++) { fact[i] = fact[i - 1] * i; } inv[M - 1] = fact[M - 1].inv(); for (int i = M - 2; i >= 0; i--) { inv[i] = inv[i + 1] * (i + 1); } } int main() { fast_io(); init(); int n; cin >> n; vector c(10); for (int i = 1; i < 10; i++) { cin >> c[i]; } mint tot = (mint(10).pow(n) - 1) / 9; mint ans = 0; for (int i = 1; i < 10; i++) { // とある桁をiに固定したときの順列の数 mint cmb = fact[n - 1]; for (int j = 1; j < 10; j++) { if (i == j) { cmb *= inv[c[j] - 1]; } else { cmb *= inv[c[j]]; } } ans += cmb * tot * i; } cout << ans.val() << endl; }