# Next permutation
# Given an array of digits - integers between 0-9
# Calculate the next permutation which rearranges the digits into the lexicographically next greater permutation of numbers.
# If such an arrangement is not possible, it must rearrange it as the lowest possible order (i.e., sorted in ascending order).
# The replacement must be in place and use only constant extra memory.
# Examples:
# Input: nums = [1,2,3]
# Output: [1,3,2]
# Example 2:
# Input: nums = [3,2,1]
# Output: [1,2,3]
# Example 3:
# Input: nums = [1,1,5]
# Output: [1,5,1]
# Example 4:
# Input: nums = [1]
# Output: [1]
# Input: nums = [3,2,4,8,7,6,3]
# Output: [3,2,6,3,4,7,8]