n = gets.to_i
num = gets.split.map(&:to_i)
num.sort!
ans = 0
if num[0] < 0 && num[-1] >= 0
  n.times{|i| ans += num[i].abs}
  puts ans
  while num.length > 2
    if num[1] < 0
      puts "#{num[-1]} #{num[0]}"
      num[-1] -= num[0]
      num.delete_at(0)
    else
      puts "#{num[0]} #{num[1]}"
      num[0] -= num[1]
      num.delete_at(1)
    end
  end
  puts "#{num[1]} #{num[0]}"
elsif num[0] >= 0 && num[-1] >= 0
  n.times{|i| ans += num[i].abs}
  puts ans-num[0]*2
  while num.length > 2
    puts "#{num[0]} #{num[1]}"
    num[0] -= num[1]
    num.delete_at(1)
  end
  puts "#{num[1]} #{num[0]}"
else
  n.times{|i| ans += num[i].abs}
  puts ans+num[-1]*2
  while num.length > 2
    puts "#{num[-1]} #{num[0]}"
    num[-1] -= num[0]
    num.delete_at(0)
  end
  puts "#{num[1]} #{num[0]}"
end
