Shuffle with constraints