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: N = int(input())
  posA, negA = [], []
  for a in list(map(int, input().split())):
      if a > 0:
          posA.append(a)
      else:
          negA.append(a)
  
  posA.sort(reverse=True)
  negA.sort()
  
  if len(posA) > 0:
      posi, negi = 1, 0
      pros = []
      nums = []
      ans = 0
      while posi < len(posA) and negi < len(negA):
          ans += posA[posi] - negA[negi]
          pros.append([negA[negi], posA[posi]])
          nums.append(negA[negi] - posA[posi])
          posi += 1
          negi += 1
  
      ans = posA[0]
      prv_val = posA[0]
      for num in nums:
          ans -= num
          pros.append([prv_val, num])
          prv_val -= num
  
      if posi < len(posA):
          pos_nums = []
          si = posi
          ei = len(posA) - 1
          while si < ei:
              pos_nums.append(posA[ei] - posA[si])
              pros.append([posA[ei], posA[si]])
              si += 1
              ei -= 1
  
          if ei - si == 2:
              ans -= posA[si + 1]
              pros.append(prv_val, posA[si + 1])
              prv_val -= posA[si + 1]
  
          for pos_num in pos_nums:
              ans -= pos_num
              pros.append([prv_val, pos_num])
              prv_val -= pos_num
      else:
          for a in negA[negi:]:
              ans -= a
              pros.append([prv_val, a])
              prv_val -= a
  else:
      ans = negA[-1]
      pros = []
      prv_val = negA[-1]
      for a in negA[:-1]:
          ans -= a
          pros.append([prv_val, a])
          prv_val -= a
  
  print(ans)
  [print(*pro) for pro in pros]
  
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"}]