N=int(input())
A=list(map(int,input().split()))

A.sort(reverse=True)
P=[]
M=[]

for i in A:
    if i<0:
        M.append(i)
    else:
        P.append(i)

ans=[]
if len(M)==0:
    if P[0]==0:
        print(0)
        for i in range(N-1):
            print(0,0)
        exit()
    else:
        x=P.pop()
        y=P.pop(0)
        ans.append([x,y])
        M.append(x-y)
if len(P)==0:
    x=M.pop(0)
    y=M.pop()
    ans.append([x,y])
    P.append(x-y)


for i in range(len(P)-1):
    y=P.pop()
    x=M.pop()
    ans.append([x,y])
    M.append(x-y)

for i in range(len(M)):
    y=M.pop()
    x=P.pop()
    ans.append([x,y])
    P.append(x-y)

print(P[0])

for x,y in ans:
    print(x,y)




 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(reverse=True) A.sort A sort reverse=True reverse True P=[] P [] M=[] M [] for i in A:
    if i<0:
        M.append(i)
    else:
        P.append(i) i A if i<0:
        M.append(i)
    else:
        P.append(i) i<0 i 0 M.append(i) M.append M append i P.append(i) P.append P append i ans=[] ans [] if len(M)==0:
    if P[0]==0:
        print(0)
        for i in range(N-1):
            print(0,0)
        exit()
    else:
        x=P.pop()
        y=P.pop(0)
        ans.append([x,y])
        M.append(x-y) len(M)==0 len(M) len M 0 if P[0]==0:
        print(0)
        for i in range(N-1):
            print(0,0)
        exit()
    else:
        x=P.pop()
        y=P.pop(0)
        ans.append([x,y])
        M.append(x-y) P[0]==0 P[0] P 0 0 print(0) print 0 for i in range(N-1):
            print(0,0)
         i range(N-1) range N-1 N 1 print(0,0) print 0 0 exit() exit x=P.pop() x P.pop() P.pop P pop y=P.pop(0) y P.pop(0) P.pop P pop 0 ans.append([x,y]) ans.append ans append [x,y] x y M.append(x-y) M.append M append x-y x y if len(P)==0:
    x=M.pop(0)
    y=M.pop()
    ans.append([x,y])
    P.append(x-y) len(P)==0 len(P) len P 0 x=M.pop(0) x M.pop(0) M.pop M pop 0 y=M.pop() y M.pop() M.pop M pop ans.append([x,y]) ans.append ans append [x,y] x y P.append(x-y) P.append P append x-y x y for i in range(len(P)-1):
    y=P.pop()
    x=M.pop()
    ans.append([x,y])
    M.append(x-y) i range(len(P)-1) range len(P)-1 len(P) len P 1 y=P.pop() y P.pop() P.pop P pop x=M.pop() x M.pop() M.pop M pop ans.append([x,y]) ans.append ans append [x,y] x y M.append(x-y) M.append M append x-y x y for i in range(len(M)):
    y=M.pop()
    x=P.pop()
    ans.append([x,y])
    P.append(x-y) i range(len(M)) range len(M) len M y=M.pop() y M.pop() M.pop M pop x=P.pop() x P.pop() P.pop P pop ans.append([x,y]) ans.append ans append [x,y] x y P.append(x-y) P.append P append x-y x y print(P[0]) print P[0] P 0 for x,y in ans:
    print(x,y) x y ans print(x,y) print x y M=[] [] M ans=[] [] ans y=P.pop(0) P.pop(0) y A=list(map(int,input().split())) list(map(int,input().split())) A x=P.pop() P.pop() x N=int(input()) int(input()) N y=P.pop() P.pop() y y=M.pop() M.pop() y x=P.pop() P.pop() x y=M.pop() M.pop() y x=M.pop() M.pop() x P=[] [] P x=M.pop(0) M.pop(0) x
N=int(input())
A=list(map(int,input().split()))

A.sort(reverse=True)
P=[]
M=[]

for i in A:
    if i<0:
        M.append(i)
    else:
        P.append(i)

ans=[]
if len(M)==0:
    if P[0]==0:
        print(0)
        for i in range(N-1):
            print(0,0)
        exit()
    else:
        x=P.pop()
        y=P.pop(0)
        ans.append([x,y])
        M.append(x-y)
if len(P)==0:
    x=M.pop(0)
    y=M.pop()
    ans.append([x,y])
    P.append(x-y)


for i in range(len(P)-1):
    y=P.pop()
    x=M.pop()
    ans.append([x,y])
    M.append(x-y)

for i in range(len(M)):
    y=M.pop()
    x=P.pop()
    ans.append([x,y])
    P.append(x-y)

print(P[0])

for x,y in ans:
    print(x,y)





