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: # -*- coding: utf-8 -*-
  # input
  n = int(input())
  a = list(map(int, input().split()))
  # calc
  ap = [i for i in a if i > 0]
  am = [i for i in a if i < 0]
  a0 = [i for i in a if i == 0]
  ans = 0
  t = 0
  t2 = 0
  lap = len(ap)
  lam = len(am)
  la0 = len(a0)
  if lap > 0 and lam > 0:
      ans = sum(ap) + abs(sum(am))
      print(ans)
      for i in range(la0):
          print(am[0], 0)
  
      if lam == 1 and lap > 1:
          print(am[0], ap[0])
          t = am[0] - ap[0]
          for i in range(1, lap - 1):
              print(t, ap[i])
              t -= ap[i]
          print(ap[lap - 1], t)
      elif lam > 1 and lap == 1:
          print(ap[0], am[0])
          t = ap[0] - am[0]
          for i in range(1, lam):
              print(t, am[i])
              t -= am[i]
      elif lam == 1 and lap == 1:
          print(ap[0], am[0])
      else:
          t = am[0]
          t2 = ap[0]
          for i in range(1, lap):
              print(t, ap[i])
              t -= ap[i]
          for i in range(1, lam):
              print(t2, am[i])
              t2 -= am[i]
          print(t2, t)
  elif lap == 0 and lam > 1:
      am.sort()
      for i in range(lam - 1):
          t += am[i]
      ans = t * (-1) + am[lam - 1]
      print(ans)
      for i in range(la0):
          print(am[0], 0)
      t2 = am[lam - 1]
      for i in range(lam - 1):
          print(t2, am[i])
          t2 -= am[i]
  elif lap > 1 and lam == 0:
      ap.sort()
      for i in range(1, lap):
          t += ap[i]
      ans = t - ap[0]
      print(ans)
      for i in range(la0):
          print(ap[0], 0)
      t2 = ap[0]
      for i in range(1, lap - 1):
          print(t2, ap[i])
          t2 -= ap[i]
      print(ap[lap - 1], t2)
  elif lap == 1 and lam == 0:
      print(ap[0])
      for i in range(la0):
          print(ap[0], 0)
  elif lap == 0 and lam == 1:
      print(abs(am[0]))
      for i in range(la0 - 1):
          print(0, 0)
      print(0, am[0])
  elif lap == 0 and lam == 0:
      print(0)
      for i in range(la0 - 1):
          print(0, 0)
  
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"}]