N=gets
A=gets.split.map(&:to_i)
A.sort!
pos,neg=A.partition{|i| i>=0}
if neg.size==0
  puts pos.inject(:+)-pos[0]*2
	temp=pos.shift
	while pos.size>1
		a=pos.pop
		puts "#{temp} #{a}"
    temp-=a
  end
	a=pos.pop
	puts "#{a} #{temp}"
	temp=a-temp
elsif pos.size==0
  puts -(neg.inject(:+)-neg[-1]*2)
	temp=neg.pop
	while neg.size>0
		a=neg.shift
		puts "#{temp} #{a}"
    temp-=a
  end
else
  puts pos.inject(:+)-neg.inject(:+)
	temp=neg.pop
	while pos.size>1
		a=pos.pop
		puts "#{temp} #{a}"
    temp-=a
  end
	a=pos.pop
	puts "#{a} #{temp}"
	temp=a-temp
	while neg.size>0
		a=neg.shift
		puts "#{temp} #{a}"
		temp-=a
  end
end