add permuluation gerneration algorithm