N=gets.to_i
as=gets.split.map(&:to_i)
as.sort!

ans=[]
max = as.pop
min = as.shift
ans << [min, max]
new_n = min-max
while as.size > 1
  max = as.pop
  ans << [new_n, max]
  new_n = new_n - max
end
ans << [as[0], new_n]
p as[0] - new_n
ans.each do |(x,y)|
  puts "#{x} #{y}"
end