fn binomial(n: u32, k0: u32) -> u32 {
    var k: u32 = k0
    if k > n - k {
        k = n - k
    }
    var result: u32 = 1
    var i: u32 = 1
    while i <= k {
        result = result * (n - k + i) / i
        i = i + 1
    }
    return result
}

fn catalan(n: u32) -> u32 {
    return binomial(2 * n, n) / (n + 1)
}

pub fn main(world: World) -> Void raises {
    if catalan(5) == 42 {
        check world.out.write("catalan ok\n")
    }
}
