Inspired by
fairydp's
Shuffle