class Solution:
# @param num, a list of integer
# @return a list of integer
def nextPermutation(self, num):
if len(num) < 2: return num
n = len(num)
for i in range(n - 1, 0, -1):
if num[i] > num[i - 1]:
for j in range(n - 1, 0, -1):
if num[j] > num[i - 1]:
num[j], num[i - 1] = num[i - 1], num[j]
break
j, k = i, n - 1
while j < k:
num[j], num[k] = num[k], num[j]
j, k = j + 1, k - 1
break
else:
j, k = 0, n - 1
while j < k:
num[j], num[k] = num[k], num[j]
j, k = j + 1, k - 1
return num