#include #include #include #include #include #include #include #include #include #include #include #define _fetch(_1, _2, _3, _4, name, ...) name #define rep2(i, n) rep3(i, 0, n) #define rep3(i, a, b) rep4(i, a, b, 1) #define rep4(i, a, b, c) for (int i = int(a); i < int(b); i += int(c)) #define rep(...) _fetch(__VA_ARGS__, rep4, rep3, rep2, _)(__VA_ARGS__) #define getchar getchar_unlocked #define putchar putchar_unlocked using namespace std; using i64 = long long; using u64 = unsigned long long; using u32 = unsigned; using poly = vector; u32 invs[100]; void solve() { const u32 MOD = 1e9 + 9; invs[1] = 1; rep(i, 2, 100) invs[i] = u64(invs[MOD % i]) * (MOD - MOD / i) % MOD; u32 C[] = {1, 1, 2, 10, 20, 100}; poly p = poly(1, 1); rep(i, 5) { poly np = poly(p.size() + 100 - C[i]); rep(j, 0, 100, C[i]) rep(k, p.size()) np[j + k] += p[k]; p = np; } u32 T; scanf("%u", &T); rep(i, T) { u64 n; scanf("%llu", &n); n /= 5; u64 m = MOD + n / 100 % MOD, r = n % 100; u64 ans = 0; while (r < p.size() && r <= n) { u64 b = 1; rep(i, 5) b = b * (m + 5 - i) % MOD * invs[i + 1] % MOD; ans += p[r] * b % MOD; r += 100; m -= 1; } printf("%llu\n", ans % MOD); } } int main() { // clock_t beg = clock(); solve(); // clock_t end = clock(); // fprintf(stderr, "%.3f sec.\n", double(end - beg) / CLOCKS_PER_SEC); return 0; }