import sys
input = sys.stdin.readline

def I(): return int(input())
def MI(): return map(int, input().split())
def LI(): return list(map(int, input().split()))

def main():
    mod=10**9+7
    N=I()
    A=LI()
    A.sort(reverse=True)
    
    pl=A[0]#負のものはこちらから引いていく
    mi=A[-1]#正のものはこちらから引いていく
    
    ans=[]
    
    for i in range(N-2):
        a=A[i+1]
        if a>=0:
            ans.append([mi,a])
            mi-=a
        else:
            ans.append([pl,a])
            pl-=a
            
    ans.append([pl,mi])
    print(pl-mi)
    for i in range(len(ans)):
        print(' '.join(map(str, ans[i])))
    

main() import sys sys input = sys.stdin.readline input sys.stdin.readline sys.stdin sys stdin readline def I(): return int(input()) I def MI(): return map(int, input().split()) MI def LI(): return list(map(int, input().split())) LI def main():
    mod=10**9+7
    N=I()
    A=LI()
    A.sort(reverse=True)
    
    pl=A[0]#負のものはこちらから引いていく
    mi=A[-1]#正のものはこちらから引いていく
    
    ans=[]
    
    for i in range(N-2):
        a=A[i+1]
        if a>=0:
            ans.append([mi,a])
            mi-=a
        else:
            ans.append([pl,a])
            pl-=a
            
    ans.append([pl,mi])
    print(pl-mi)
    for i in range(len(ans)):
        print(' '.join(map(str, ans[i])))
     main mod=10**9+7 mod 10**9+7 10**9 10 9 7 N=I() N I() I A=LI() A LI() LI A.sort(reverse=True) A.sort A sort reverse=True reverse True pl=A[0] pl A[0] A 0 mi=A[-1] mi A[-1] A -1 ans=[] ans [] for i in range(N-2):
        a=A[i+1]
        if a>=0:
            ans.append([mi,a])
            mi-=a
        else:
            ans.append([pl,a])
            pl-=a
            
     i range(N-2) range N-2 N 2 a=A[i+1] a A[i+1] A i+1 i 1 if a>=0:
            ans.append([mi,a])
            mi-=a
        else:
            ans.append([pl,a])
            pl-=a
            
     a>=0 a 0 ans.append([mi,a]) ans.append ans append [mi,a] mi a mi-=a mi a ans.append([pl,a]) ans.append ans append [pl,a] pl a pl-=a pl a ans.append([pl,mi]) ans.append ans append [pl,mi] pl mi print(pl-mi) print pl-mi pl mi for i in range(len(ans)):
        print(' '.join(map(str, ans[i])))
     i range(len(ans)) range len(ans) len ans print(' '.join(map(str, ans[i]))) print ' '.join(map(str, ans[i])) ' '.join ' ' join map(str, ans[i]) map str ans[i] ans i main() main def main():
    mod=10**9+7
    N=I()
    A=LI()
    A.sort(reverse=True)
    
    pl=A[0]#負のものはこちらから引いていく
    mi=A[-1]#正のものはこちらから引いていく
    
    ans=[]
    
    for i in range(N-2):
        a=A[i+1]
        if a>=0:
            ans.append([mi,a])
            mi-=a
        else:
            ans.append([pl,a])
            pl-=a
            
    ans.append([pl,mi])
    print(pl-mi)
    for i in range(len(ans)):
        print(' '.join(map(str, ans[i])))
     def main():
    mod=10**9+7
    N=I()
    A=LI()
    A.sort(reverse=True)
    
    pl=A[0]#負のものはこちらから引いていく
    mi=A[-1]#正のものはこちらから引いていく
    
    ans=[]
    
    for i in range(N-2):
        a=A[i+1]
        if a>=0:
            ans.append([mi,a])
            mi-=a
        else:
            ans.append([pl,a])
            pl-=a
            
    ans.append([pl,mi])
    print(pl-mi)
    for i in range(len(ans)):
        print(' '.join(map(str, ans[i])))
     main def MI(): return map(int, input().split()) def MI(): return map(int, input().split()) MI def LI(): return list(map(int, input().split())) def LI(): return list(map(int, input().split())) LI input = sys.stdin.readline sys.stdin.readline input def I(): return int(input()) def I(): return int(input()) I
import sys
input = sys.stdin.readline

def I(): return int(input())
def MI(): return map(int, input().split())
def LI(): return list(map(int, input().split()))

def main():
    mod=10**9+7
    N=I()
    A=LI()
    A.sort(reverse=True)
    
    pl=A[0]#負のものはこちらから引いていく
    mi=A[-1]#正のものはこちらから引いていく
    
    ans=[]
    
    for i in range(N-2):
        a=A[i+1]
        if a>=0:
            ans.append([mi,a])
            mi-=a
        else:
            ans.append([pl,a])
            pl-=a
            
    ans.append([pl,mi])
    print(pl-mi)
    for i in range(len(ans)):
        print(' '.join(map(str, ans[i])))
    

main()
