Generate all permutation by coroutine