Implementations done to learn new algorithms.