n = gets.to_i
a = gets.split.map(&:to_i).sort

maxi = a[-1]
mini = a[0]

ans = []
(n - 2).times do |i|
  v = a[i + 1]
  if v < 0
    ans << [maxi, v]
    maxi -= v
  else
    ans << [mini, v]
    mini -= v
  end
end

ans << [maxi, mini]
maxi -= mini
puts maxi
ans.each do |x,y|
  puts "#{x} #{y}"
end