use std::slice::Iter;
#[rustfmt::skip]
pub fn catalan_tree3<T: Copy>() -> Iter<'static, fn(&[fn(T, T) -> T], &[T]) -> T> {
let fs: &[fn(&[fn(T, T) -> T], &[T]) -> T; 2] = &[
|f, n| f[0](n[0], f[1](n[1], n[2])),
|f, n| f[0](f[1](n[0], n[1]), n[2])
];
return fs.iter();
}
pub fn catalan_tree4<T: Copy>() -> Iter<'static, fn(&[fn(T, T) -> T], &[T]) -> T> {
let fs: &[fn(&[fn(T, T) -> T], &[T]) -> T; 5] = &[
|f, n| f[0](n[0], f[1](n[1], f[2](n[2], n[3]))),
|f, n| f[0](n[0], f[1](f[2](n[1], n[2]), n[3])),
|f, n| f[0](f[1](n[0], n[1]), f[2](n[2], n[3])),
|f, n| f[0](f[1](n[0], f[2](n[1], n[2])), n[3]),
|f, n| f[0](f[1](f[2](n[0], n[1]), n[2]), n[3]),
];
return fs.iter();
}
pub fn catalan_tree5<T: Copy>() -> Iter<'static, fn(&[fn(T, T) -> T], &[T]) -> T> {
let fs: &[fn(&[fn(T, T) -> T], &[T]) -> T; 14] = &[
|f, n| f[0](n[0], f[1](n[1], f[2](n[2], f[3](n[3], n[4])))),
|f, n| f[0](n[0], f[1](n[1], f[2](f[3](n[2], n[3]), n[4]))),
|f, n| f[0](n[0], f[1](f[2](n[1], n[2]), f[3](n[3], n[4]))),
|f, n| f[0](n[0], f[1](f[2](n[1], f[3](n[2], n[3])), n[4])),
|f, n| f[0](n[0], f[1](f[2](f[3](n[1], n[2]), n[3]), n[4])),
|f, n| f[0](f[1](n[0], n[1]), f[2](n[2], f[3](n[3], n[4]))),
|f, n| f[0](f[1](n[0], n[1]), f[2](f[3](n[2], n[3]), n[4])),
|f, n| f[0](f[1](n[0], f[2](n[1], n[2])), f[3](n[3], n[4])),
|f, n| f[0](f[1](f[2](n[0], n[1]), n[2]), f[3](n[3], n[4])),
|f, n| f[0](f[1](n[0], f[2](n[1], f[3](n[2], n[3]))), n[4]),
|f, n| f[0](f[1](n[0], f[2](f[3](n[1], n[2]), n[3])), n[4]),
|f, n| f[0](f[1](f[2](n[0], n[1]), f[3](n[2], n[3])), n[4]),
|f, n| f[0](f[1](f[2](n[0], f[3](n[1], n[2])), n[3]), n[4]),
|f, n| f[0](f[1](f[2](f[3](n[0], n[1]), n[2]), n[3]), n[4]),
];
return fs.iter();
}
pub fn catalan_tree6<T: Copy>() -> Iter<'static, fn(&[fn(T, T) -> T], &[T]) -> T> {
let fs: &[fn(&[fn(T, T) -> T], &[T]) -> T; 42] = &[
|f, n| f[0](n[0], f[1](n[1], f[2](n[2], f[3](n[3], f[4](n[4], n[5]))))),
|f, n| f[0](n[0], f[1](n[1], f[2](n[2], f[3](f[4](n[3], n[4]), n[5])))),
|f, n| f[0](n[0], f[1](n[1], f[2](f[3](n[2], n[3]), f[4](n[4], n[5])))),
|f, n| f[0](n[0], f[1](n[1], f[2](f[3](n[2], f[4](n[3], n[4])), n[5]))),
|f, n| f[0](n[0], f[1](n[1], f[2](f[3](f[4](n[2], n[3]), n[4]), n[5]))),
|f, n| f[0](n[0], f[1](f[2](n[1], n[2]), f[3](n[3], f[4](n[4], n[5])))),
|f, n| f[0](n[0], f[1](f[2](n[1], n[2]), f[3](f[4](n[3], n[4]), n[5]))),
|f, n| f[0](n[0], f[1](f[2](n[1], f[3](n[2], n[3])), f[4](n[4], n[5]))),
|f, n| f[0](n[0], f[1](f[2](f[3](n[1], n[2]), n[3]), f[4](n[4], n[5]))),
|f, n| f[0](n[0], f[1](f[2](n[1], f[3](n[2], f[4](n[3], n[4]))), n[5])),
|f, n| f[0](n[0], f[1](f[2](n[1], f[3](f[4](n[2], n[3]), n[4])), n[5])),
|f, n| f[0](n[0], f[1](f[2](f[3](n[1], n[2]), f[4](n[3], n[4])), n[5])),
|f, n| f[0](n[0], f[1](f[2](f[3](n[1], f[4](n[2], n[3])), n[4]), n[5])),
|f, n| f[0](n[0], f[1](f[2](f[3](f[4](n[1], n[2]), n[3]), n[4]), n[5])),
|f, n| f[0](f[1](n[0], n[1]), f[2](n[2], f[3](n[3], f[4](n[4], n[5])))),
|f, n| f[0](f[1](n[0], n[1]), f[2](n[2], f[3](f[4](n[3], n[4]), n[5]))),
|f, n| f[0](f[1](n[0], n[1]), f[2](f[3](n[2], n[3]), f[4](n[4], n[5]))),
|f, n| f[0](f[1](n[0], n[1]), f[2](f[3](n[2], f[4](n[3], n[4])), n[5])),
|f, n| f[0](f[1](n[0], n[1]), f[2](f[3](f[4](n[2], n[3]), n[4]), n[5])),
|f, n| f[0](f[1](n[0], f[2](n[1], n[2])), f[3](n[3], f[4](n[4], n[5]))),
|f, n| f[0](f[1](n[0], f[2](n[1], n[2])), f[3](f[4](n[3], n[4]), n[5])),
|f, n| f[0](f[1](f[2](n[0], n[1]), n[2]), f[3](n[3], f[4](n[4], n[5]))),
|f, n| f[0](f[1](f[2](n[0], n[1]), n[2]), f[3](f[4](n[3], n[4]), n[5])),
|f, n| f[0](f[1](n[0], f[2](n[1], f[3](n[2], n[3]))), f[4](n[4], n[5])),
|f, n| f[0](f[1](n[0], f[2](f[3](n[1], n[2]), n[3])), f[4](n[4], n[5])),
|f, n| f[0](f[1](f[2](n[0], n[1]), f[3](n[2], n[3])), f[4](n[4], n[5])),
|f, n| f[0](f[1](f[2](n[0], f[3](n[1], n[2])), n[3]), f[4](n[4], n[5])),
|f, n| f[0](f[1](f[2](f[3](n[0], n[1]), n[2]), n[3]), f[4](n[4], n[5])),
|f, n| f[0](f[1](n[0], f[2](n[1], f[3](n[2], f[4](n[3], n[4])))), n[5]),
|f, n| f[0](f[1](n[0], f[2](n[1], f[3](f[4](n[2], n[3]), n[4]))), n[5]),
|f, n| f[0](f[1](n[0], f[2](f[3](n[1], n[2]), f[4](n[3], n[4]))), n[5]),
|f, n| f[0](f[1](n[0], f[2](f[3](n[1], f[4](n[2], n[3])), n[4])), n[5]),
|f, n| f[0](f[1](n[0], f[2](f[3](f[4](n[1], n[2]), n[3]), n[4])), n[5]),
|f, n| f[0](f[1](f[2](n[0], n[1]), f[3](n[2], f[4](n[3], n[4]))), n[5]),
|f, n| f[0](f[1](f[2](n[0], n[1]), f[3](f[4](n[2], n[3]), n[4])), n[5]),
|f, n| f[0](f[1](f[2](n[0], f[3](n[1], n[2])), f[4](n[3], n[4])), n[5]),
|f, n| f[0](f[1](f[2](f[3](n[0], n[1]), n[2]), f[4](n[3], n[4])), n[5]),
|f, n| f[0](f[1](f[2](n[0], f[3](n[1], f[4](n[2], n[3]))), n[4]), n[5]),
|f, n| f[0](f[1](f[2](n[0], f[3](f[4](n[1], n[2]), n[3])), n[4]), n[5]),
|f, n| f[0](f[1](f[2](f[3](n[0], n[1]), f[4](n[2], n[3])), n[4]), n[5]),
|f, n| f[0](f[1](f[2](f[3](n[0], f[4](n[1], n[2])), n[3]), n[4]), n[5]),
|f, n| f[0](f[1](f[2](f[3](f[4](n[0], n[1]), n[2]), n[3]), n[4]), n[5]),
];
return fs.iter();
}