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

if as.size==2
    puts max-min
    puts [max,min].join(" ")
    exit
end

as=as[1..-2]
ans=Array.new
ans_c=max-min
as.each do |e|
    if e<0
        ans_c-=e
        ans << [max,e]
        max=max-e
    elsif e>0
        ans_c+=e
        ans << [min,e]
        min=min-e
    else
        ans << [max,0]
    end
end
ans << [max,min]
puts ans_c
puts ans.map{|e|e.join(" ")}