n = gets.to_i
a = gets.chomp.split.map(&:to_i).sort
sign = Array.new(n,nil)
if a[0] >= 0 then
  puts a.inject(:+) - a[0] * 2
  cnt = a[0]
  (n - 2).times do |i|
    puts cnt.to_s + " " + a[i + 1].to_s
    cnt = cnt - a[i + 1]
  end
  puts a[n - 1].to_s + " " + cnt.to_s
elsif a[n - 1] <= 0 then
  puts a.inject(:+) * -1 + a[n - 1] * 2
  cnt = a[n - 1]
  (n - 1).times do |i|
    puts cnt.to_s + " " + a[i].to_s
    cnt = cnt - a[i]
  end
else
  puts a.map(&:abs).inject(:+)
  cnt = a[0]
  pos = n - 2
  while a[pos] >= 0
    puts cnt.to_s + " " + a[pos].to_s
    cnt = cnt - a[pos]
    pos -= 1
  end
  puts a[n - 1].to_s + " " + cnt.to_s
  cnt = a[n - 1] - cnt
  while pos > 0
    puts cnt.to_s + " " + a[pos].to_s
    cnt = cnt - a[pos]
    pos -= 1
  end
end