public class Euler15 {
    static long binomial(int n, int k) {
        k = Math.min(k, n - k);
        long val = 1;
        for (int i = 1; i <= k; i++)
            val = val * (n - k + i) / i;
        return val;
    }

    static long solve(int gridSize) {
        return binomial(2 * gridSize, gridSize);
    }

    public static void main(String[] args) {
        assert solve(2) == 6 : "Checkpoint failed for grid_size=2";
        System.out.println(solve(20));
    }
}
