def permute( values, perms = list(), cur_perm = list() ):
if len( values ) == 0:
perms.append( cur_perm )
else:
for value in values:
new_values = values[:]
new_values.remove( value )
new_perm = cur_perm[:]
new_perm.append( value )
permute( new_values, cur_perm = new_perm )
return perms