output_description: Print the maximum possible value M of the final integer on the blackboard, and
  a sequence of operations x_i, y_i that maximizes the final integer, in the
  format below.
  
  Here x_i and y_i represent the integers x and y chosen in the i-th operation,
  respectively.
  
  If there are multiple sequences of operations that maximize the final integer,
  any of them will be accepted.
  
      
      
      M
      x_1 y_1
      :
      x_{N-1} y_{N-1}
      
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      A_1 A_2 ... A_N
attempt: import heapq
  from collections import defaultdict
  
  N = int(input())
  nums = list(map(int, input().split(" ")))
  Xs = []
  Ys = []
  S = defaultdict(lambda: 0)
  途中式 = []
  for num in nums:
      heapq.heappush(Xs, -num)
      heapq.heappush(Ys, num)
      S[num] += 1
  for _ in range(N - 2):
      while True:
          X = heapq.heappop(Xs)
          X = -X
          if S[X] > 0:
              S[X] -= 1
              break
  
      while True:
          Y = heapq.heappop(Ys)
          if S[Y] > 0:
              S[Y] -= 1
              break
      途中式.append((Y, X))
      temp = Y - X
      S[temp] += 1
      heapq.heappush(Xs, -temp)
      heapq.heappush(Ys, temp)
  anss = []
  for k, v in S.items():
      if v > 0:
          anss.append(k)
  Y = max(anss)
  X = min(anss)
  ans1 = Y - X
  途中式.append((Y, X))
  
  
  Xs = []
  Ys = []
  S = defaultdict(lambda: 0)
  途中式2 = []
  for num in nums:
      heapq.heappush(Xs, -num)
      heapq.heappush(Ys, num)
      S[num] += 1
  for _ in range(N - 2):
      while True:
          X = heapq.heappop(Xs)
          X = -X
          if S[X] > 0:
              S[X] -= 1
              break
  
      while True:
          Y = heapq.heappop(Ys)
          if S[Y] > 0:
              S[Y] -= 1
              break
      途中式2.append((X, Y))
      temp = X - Y
      S[temp] += 1
      heapq.heappush(Xs, -temp)
      heapq.heappush(Ys, temp)
  anss = []
  for k, v in S.items():
      if v > 0:
          anss.append(k)
  Y = min(anss)
  X = max(anss)
  ans2 = X - Y
  途中式2.append((X, Y))
  
  if ans1 < ans2:
      途中式 = 途中式2
      ans1 = ans2
  
  
  print(ans1)
  
  for temp in 途中式:
      Y, X = temp
      print(Y, X)
  
problem_description: Statement
  
  There are N integers, A_1, A_2, ..., A_N, written on a blackboard.
  
  We will repeat the following operation N-1 times so that we have only one
  integer on the blackboard.
  
    * Choose two integers x and y on the blackboard and erase these two integers. Then, write a new integer x-y.
  
  Find the maximum possible value of the final integer on the blackboard and a
  sequence of operations that maximizes the final integer.
samples: [{"input": "3\n    1 -1 2", "output": "4\n    -1 1\n    2 -2\n    \n\nIf we choose x = -1 and y = 1 in the first operation, the set of integers\nwritten on the blackboard becomes (-2, 2).\n\nThen, if we choose x = 2 and y = -2 in the second operation, the set of\nintegers written on the blackboard becomes (4).\n\nIn this case, we have 4 as the final integer. We cannot end with a greater\ninteger, so the answer is 4.\n\n* * *"}, {"input": "3\n    1 1 1", "output": "1\n    1 1\n    1 0"}]