n=int(input())
lists=list(map(int,input().split()))

mini=min(lists)
maxi=max(lists)

if mini>=0 or maxi<=0:
    
    lists=sorted(lists)
    ans=0
    length=len(lists)//2
    
    for i in range(len(lists)):
        if i<=length-1:
            ans-=lists[i]
        else:
            ans+=lists[i]
    print(ans)
    
    some=lists[-1]
    
    if len(lists)%2!=0:
        some=lists[length]
        print(lists[0],some)
        some=lists[0]-some
        for i in range(1,length):
            print(lists[i+length],some)
            some=lists[i+length]-some
            print(lists[i],some)
            some=lists[i]-some
        print(lists[-1],some)

        
    elif len(lists)%2==0:
        some=lists[length]
        print(lists[0],some)
        some=lists[0]-some
        for i in range(1,length-1):
            print(lists[i+length],some)
            some=lists[i+length]-some
            print(lists[i],some)
            some=lists[i]-some
        print(lists[-1],some)
        some=lists[-1]-some
        print(some,lists[length-1])
        some=some-lists[length-1]


else:
    lists=sorted(lists)
    positive=0
    negative=0
    zero=0
    
    for some in lists:
        if some >0:
            positive+=1  
        elif some==0:
            zero+=1 
        elif some<0:
            negative+=1
    ans=0
    if negative>positive:

        z=0
        for _ in  lists:
            z+=abs(_)
        print(z)
        #解答の出力
        ans=lists[-1]
        for i in range(negative-positive):
            print(ans,lists[i])
            ans=ans-lists[i]
        x=negative-positive
        for j in range(positive-1):
            print(ans,lists[x+j])
            ans=ans-lists[x+j]
            print(lists[x+j+1],ans)
            ans=lists[x+j+1]-ans

        print(lists[-negative],ans)
        for i in range(zero):
            print(z,0)

    elif negative<positive:
        z=0
        for _ in  lists:
            z+=abs(_)
        print(z)
        #解答の出力        
        ans=lists[0]
        for i in range(1,positive-negative+1):
            print(ans,lists[-i])
            ans=ans-lists[-i]
        x=positive-negative+1
        for i in range(negative-1):
            print(lists[-x-i],ans)
            ans=lists[-x-i]-ans
            print(lists[i+1],ans)  
            ans=lists[i+1]-ans
        print(lists[-positive],ans)
        for i in range(zero):
            print(z,0)
    else:   
        
        ans=0
        length=len(lists)//2
    
        for i in range(len(lists)):
            if i<=length-1:
                ans-=lists[i]
            else:
                ans+=lists[i]
        print(ans) 
        
        ans=lists[0]
        for j in range(1,positive):
            print(lists[-j],ans)
            ans=lists[-j]-ans
            print(lists[j],ans)
            ans=lists[j]-ans    
        print(lists[positive],ans)
        for i in range(zero):
            print(z,0)


### FIXED CODE ###

N=int(input())
plus=[]
other=[]
d=list(map(int,input().split()))
for num in d:
    if num>0:
        plus.append(num)
    else:
        other.append(num)
if len(plus)>0:
    K=len(plus)
    if K==1:
        data=[]
        ans=plus[0]
        for q in other:
            data.append((ans,q))
            ans+=abs(q)
        print(ans)
        for some in data:
            x,y=some
            print(x,y)

    else:
        data=[]
        if len(other)>=1:
            ans=other[-1]
            for some in plus[1:]:
                data.append((ans,some))
                ans-=some
            other[-1]=ans
            ans=plus[0]
            for q in other:
                data.append((ans,q))
                ans+=abs(q)
            print(ans)
            for some in data:
                x,y=some
                print(x,y)
        else:
            plus.sort()
            ans=plus[0]
            for some in plus[1:-1]:
                data.append((ans,some))
                ans-=some
            data.append((plus[-1],ans))
            ans=plus[-1]-ans
            print(ans)
            for some in data:
                x,y=some
                print(x,y)
            
elif len(plus)==0:
    other.sort(reverse=True)
    data=[]
    ans=other[0]
    for q in other[1:]:
        data.append((ans,q))
        ans+=abs(q)
    print(ans)
    for some in data:
        x,y=some
        print(x,y)