def swap(a, b):
return b, a
def perminate(array, start, end):
if start == end:
print array
return
N = len(array)
for i in range(start, N):
array[i], array[start] = swap(array[i], array[start])
perminate(array, start+1, end)
array[i], array[start] = swap(array[i], array[start])
a = [1,2,3,4]
perminate(a, 0, len(a)-1)