<p>Given an array of <strong>distinct</strong> integers <code>arr</code>, find all pairs of elements with the minimum absolute difference of any two elements.</p>

<p>Return a list of pairs in ascending order(with respect to pairs), each pair <code>[a, b]</code> follows</p>

<ul>
	<li><code>a, b</code> are from <code>arr</code></li>
	<li><code>a &lt; b</code></li>
	<li><code>b - a</code> equals to the minimum absolute difference of any two elements in <code>arr</code></li>
</ul>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> arr = [4,2,1,3]
<strong>Output:</strong> [[1,2],[2,3],[3,4]]
<strong>Explanation: </strong>The minimum absolute difference is 1. List all pairs with difference equal to 1 in ascending order.</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> arr = [1,3,6,10,15]
<strong>Output:</strong> [[1,3]]
</pre>

<p><strong class="example">Example 3:</strong></p>

<pre>
<strong>Input:</strong> arr = [3,8,-10,23,19,-4,-14,27]
<strong>Output:</strong> [[-14,-10],[19,23],[23,27]]
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>2 &lt;= arr.length &lt;= 10<sup>5</sup></code></li>
	<li><code>-10<sup>6</sup> &lt;= arr[i] &lt;= 10<sup>6</sup></code></li>
</ul>

class Solution:
    def minimumAbsDifference(self, arr: List[int]) -> List[List[int]]:
        def heapify(arr, n, i):
            largest = i
            l = 2 * i + 1
            r = 2 * i + 2
            if l < n and arr[i] < arr[l]:
                largest = l
            if r < n and arr[largest] < arr[r]:
                largest = r
            if largest != i:
                (arr[i], arr[largest]) = (arr[largest], arr[i])
                heapify(arr, n, largest)
        def heapSort(arr):
            n = len(arr)
            for i in range(n // 2, -1, -1):
                heapify(arr, n, i)
            for i in range(n - 1, 0, -1):
                (arr[i], arr[0]) = (arr[0], arr[i])
                heapify(arr, i, 0)
        heapSort(arr)
        arr = [arr[i] for i in range(len(arr))]

        arr_copy = arr.copy()
        arr = arr[::-1]
        minimum = []
        i = 0
        i1 = 1
        j = len(arr) - 1
        while i1 <= j:
            minimum.append(arr[i] - arr[i1])
            i += 1
            i1 += 1

        minn = minimum[0]
        for i in minimum:
            if i < minn:
                minn = i
                
        i = 0
        b = []
        i1 = 1
        j = len(arr_copy) - 1
        while i1 <= j:
            if abs(arr_copy[i] - arr_copy[i1]) == minn:
                b.append([arr_copy[i], arr_copy[i1]])
            i += 1
            i1 += 1
        return b
31900