public class Euler627 {
    static final int MOD = 1000000007;

    static int modAdd(int a, int b) {
        int s = a + b;
        if (s >= MOD)
            s -= MOD;
        if (s < 0)
            s += MOD;
        return s;
    }

    static int modMul(long a, long b) {
        return (int) ((a % MOD) * (b % MOD) % MOD);
    }

    static int modPow(int a, int e) {
        long r = 1, x = a;
        while (e > 0) {
            if ((e & 1) == 1)
                r = (r * x) % MOD;
            x = (x * x) % MOD;
            e >>= 1;
        }
        return (int) r;
    }

    static class Comb {
        int[] fact;
        int[] ifact;

        Comb(int n) {
            fact = new int[n + 1];
            ifact = new int[n + 1];
            fact[0] = 1;
            ifact[0] = 1;

            for (int i = 1; i <= n; i++)
                fact[i] = modMul(fact[i - 1], i);
            ifact[n] = modPow(fact[n], MOD - 2);
            for (int i = n; i >= 1; i--)
                ifact[i - 1] = modMul(ifact[i], i);
        }

        int C(int n, int k) {
            if (k < 0 || k > n)
                return 0;
            return modMul(fact[n], modMul(ifact[k], ifact[n - k]));
        }
    }

    static int F30(int n, Comb cb) {
        int ans = 0;
        ans = modAdd(ans, cb.C(n + 10, 10));
        if (n >= 1)
            ans = modAdd(ans, modMul(19, cb.C(n + 9, 10)));
        if (n >= 2)
            ans = modAdd(ans, modMul(33, cb.C(n + 8, 10)));
        if (n >= 3)
            ans = modAdd(ans, modMul(6, cb.C(n + 7, 10)));
        return ans;
    }

    public static String solve() {
        int N = 10001;
        Comb cb = new Comb(N + 10);
        return Integer.toString(F30(N, cb));
    }

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