code: def _swap(self, swap):
          
          if swap is None:
              return
          p1, p2 = swap
          square_distance = abs(p1[0] - p2[0]) + abs(p1[1] - p2[1])
          if square_distance != 1:
              raise ValueError('Positions unexpectedly not adjacent: square'
                               ' distance between {} and {} is'
                               ' {}'.format(p1, p2,
                                            square_distance))
          a = self._array
          a[p1], a[p2] = a[p2], a[p1]
docs: Simulate swapping as in PQ.
  
          swap should be a sequence of two positions with a square distance of
          exactly 1.
  
          Non-adjacent swaps cause a ValueError.