shift
array partion