1defalmostSorted(nums):2defisSorted(arr, left, right):3 i = left +14while i <= right:5if arr[i -1]> arr[i]:returnFalse6 i +=17returnTrue89if isSorted(nums,0,len(nums)-1):print("yes")10else:11 sortedNums =list(nums)12 sortedNums.sort()1314# find first left index's element which is not equal to sortedNums15 l =016while l <len(nums)and nums[l]== sortedNums[l]: l +=11718# find first right index's element which is not equal to sortedNums19 r =len(nums)-120while r >=0and nums[r]== sortedNums[r]: r -=12122# check if exchanging l, r makes it sorted23 nums[l], nums[r]= nums[r], nums[l]24if isSorted(nums,0,len(nums)-1):print("yes\nswap {i} {j}".format(i=l +1, j=r +1))25else:26 nums[l], nums[r]= nums[r], nums[l]27 seg =list(nums[l:r +1])28 seg.reverse()29if isSorted(seg,0,len(seg)-1):print("yes\nreverse {i} {j}".format(i=l +1, j=r +1))30else:print("no")