combination algorithm complete!