public class Euler866 {

    static final long MOD = 987654319L;

    static long modMul(long a, long b) {
        long aMod = (a % MOD + MOD) % MOD;
        long bMod = (b % MOD + MOD) % MOD;
        return (aMod * bMod) % MOD;
    }

    static long modInv(long a) {
        long r0 = a, r1 = MOD;
        long s0 = 1, s1 = 0;
        while (r1 != 0) {
            long q = r0 / r1;
            long r2 = r0 - q * r1;
            r0 = r1;
            r1 = r2;
            long s2 = s0 - q * s1;
            s0 = s1;
            s1 = s2;
        }
        if (s0 < 0)
            s0 += MOD;
        return s0;
    }

    static long GMod(int N) {
        long[] g = new long[N + 1];
        g[0] = 1;

        for (int n = 1; n <= N; ++n) {
            long sum = 0;
            for (int i = 1; i <= n; ++i) {
                sum = (sum + modMul(g[i - 1], g[n - i])) % MOD;
            }

            long H = (long) n * (2L * n - 1) % MOD;
            long invn = modInv(n % MOD);
            g[n] = modMul(modMul(H, sum), invn);
        }

        return g[N];
    }

    public static String solve() {
        return Long.toString(GMod(100));
    }

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