from collections import *
n=int(input())
a=list(map(int,input().split()))
a.sort()
a=deque(a)
ans=[]
aa=a.pop()
tmp=a.popleft()
while a:
    t=a.popleft()
    if t<=0:
        ans.append((aa,t))
        aa-=t
    else:
        ans.append((tmp,t))
        tmp-=t
ans.append((aa,tmp))
print(aa-tmp)
for i in ans:
    print(i[0],i[1]) from collections import * n=int(input()) n int(input()) int input() input a=list(map(int,input().split())) a list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split a.sort() a.sort a sort a=deque(a) a deque(a) deque a ans=[] ans [] aa=a.pop() aa a.pop() a.pop a pop tmp=a.popleft() tmp a.popleft() a.popleft a popleft while a:
    t=a.popleft()
    if t<=0:
        ans.append((aa,t))
        aa-=t
    else:
        ans.append((tmp,t))
        tmp-=t a t=a.popleft() t a.popleft() a.popleft a popleft if t<=0:
        ans.append((aa,t))
        aa-=t
    else:
        ans.append((tmp,t))
        tmp-=t t<=0 t 0 ans.append((aa,t)) ans.append ans append (aa,t) aa t aa-=t aa t ans.append((tmp,t)) ans.append ans append (tmp,t) tmp t tmp-=t tmp t ans.append((aa,tmp)) ans.append ans append (aa,tmp) aa tmp print(aa-tmp) print aa-tmp aa tmp for i in ans:
    print(i[0],i[1]) i ans print(i[0],i[1]) print i[0] i 0 i[1] i 1 a=list(map(int,input().split())) list(map(int,input().split())) a n=int(input()) int(input()) n a=deque(a) deque(a) a ans=[] [] ans t=a.popleft() a.popleft() t tmp=a.popleft() a.popleft() tmp tmp-=t t tmp aa-=t t aa aa=a.pop() a.pop() aa
from collections import *
n=int(input())
a=list(map(int,input().split()))
a.sort()
a=deque(a)
ans=[]
aa=a.pop()
tmp=a.popleft()
while a:
    t=a.popleft()
    if t<=0:
        ans.append((aa,t))
        aa-=t
    else:
        ans.append((tmp,t))
        tmp-=t
ans.append((aa,tmp))
print(aa-tmp)
for i in ans:
    print(i[0],i[1])