# [ ≤ ][ ≤ ][ > ][ > ][ > ][ > ][ ? ][ hi ]
# └─ left └─ right
def lomuto_partition(A, lo, hi):
pivot = A[hi]
left = lo
for right in range(lo, hi):
if A[right] <= pivot:
A[left], A[right] = A[right], A[left]
left = left + 1
A[left], A[hi] = A[hi], A[left]
return left