pub fn count_combinations(n_total: u64, n_choose: u64) -> Result<u64, CombinatoricsError> {
/// Count *surjections* from an `n`-element set onto a `k`-element set: the Stirling number of the
/// second kind `S(n, k)`, i.e. the number of ways to partition `n` labelled elements into exactly
/// Count ways to partition `n` labelled elements into exactly `k` unlabelled, non-empty blocks,
/// Generalises [`stirling_second_kind`] (which is the `block_min = 1, block_max = n` case) to a
/// (choose `s`, the size of the block containing the smallest remaining element, then its other