implement collatz