Rearrangement Algorithm