public class Euler429 {
    private static final long MOD = 1000000009L;

    private static long modPow(long base, long exp) {
        long result = 1;
        base %= MOD;
        while (exp > 0) {
            if ((exp & 1) != 0) {
                result = (result * base) % MOD;
            }
            base = (base * base) % MOD;
            exp >>= 1;
        }
        return result;
    }

    private static long exponentInFactorial(int n, int p) {
        long e = 0;
        int x = n;
        while (x > 0) {
            x /= p;
            e += x;
        }
        return e;
    }

    public static String solve() {
        int n = 100000000;
        boolean[] isComposite = new boolean[n + 1];

        long ans = 1;
        for (int i = 2; i <= n; i++) {
            if (!isComposite[i]) {
                long e = exponentInFactorial(n, i);
                long pe2 = modPow(i, 2 * e);
                ans = (ans * (pe2 + 1)) % MOD;

                if ((long) i * i <= n) {
                    for (int j = i * i; j <= n; j += i) {
                        isComposite[j] = true;
                    }
                }
            }
        }

        return String.valueOf(ans);
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
