import java.math.BigInteger;

public class Euler194 {
    static long M = 100000000L;
    static BigInteger BM = BigInteger.valueOf(M);

    // Brute-force extension values at c=2,...,7:
    // Type A: 0, 4, 62, 372, 1396, 3980
    // Type B: 0, 6, 88, 486, 1728, 4750
    static long evalPoly(long[] vals, int c) {
        long[] d = vals.clone();
        for (int lev = 1; lev < d.length; lev++)
            for (int i = d.length - 1; i >= lev; i--)
                d[i] -= d[i - 1];
        BigInteger result = BigInteger.ZERO;
        BigInteger binom = BigInteger.ONE;
        for (int i = 0; i < d.length; i++) {
            result = result.add(binom.multiply(BigInteger.valueOf(d[i])));
            if (i < d.length - 1)
                binom = binom.multiply(BigInteger.valueOf(c - 2 - i)).divide(BigInteger.valueOf(i + 1));
        }
        return result.mod(BM).longValue();
    }

    static long mulmod(long a, long b) {
        return BigInteger.valueOf(a).multiply(BigInteger.valueOf(b)).mod(BM).longValue();
    }

    static long powmod(long base, int exp) {
        long r = 1;
        base = ((base % M) + M) % M;
        for (; exp > 0; exp >>= 1) {
            if ((exp & 1) == 1)
                r = mulmod(r, base);
            base = mulmod(base, base);
        }
        return r;
    }

    public static void main(String[] args) {
        int a = 25, b = 75, c = 1984;
        long eA = evalPoly(new long[] { 0, 4, 62, 372, 1396, 3980 }, c);
        long eB = evalPoly(new long[] { 0, 6, 88, 486, 1728, 4750 }, c);
        BigInteger comb = BigInteger.ONE;
        for (int i = 1; i <= a; i++)
            comb = comb.multiply(BigInteger.valueOf(a + b - i + 1)).divide(BigInteger.valueOf(i));
        long result = comb.mod(BM).longValue();
        result = mulmod(result, c % M);
        result = mulmod(result, (c - 1) % M);
        result = mulmod(result, powmod(eA, a));
        result = mulmod(result, powmod(eB, b));
        System.out.println(result);
    }
}
