from bisect import bisect

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

ans = []

if len(A) == 2 :
    ans.append(A[::-1])
    calc = A[1] - A[0]

else :
    ind = bisect(A,0)

    X = A[:ind]
    Y = A[ind:]
    
    if len(X) == 0 :
        ans.append([Y[0],Y[1]])
        X.append(Y[0]-Y[1])
        Y.pop(0)
        Y.pop(0)
    elif len(Y) == 0 :
        ans.append([X[-1],X[-2]])
        Y.append(X[-1]-X[-2])
        X.pop(-1)
        X.pop(-1)
    
    while True :
        if len(X) >= 2 :
            ans.append([Y[0],X[-1]])
            Y[0] -= X.pop(-1)
        elif len(Y) >= 2 :
            ans.append([X[-1],Y[0]])
            X[-1] -= Y.pop(0)
        else :
            ans.append([Y[0],X[0]])
            calc = Y.pop(0) - X.pop(0)
            break
    
print(calc)
for i in range(len(ans)) :
    print(*ans[i]) from bisect import bisect N =int(input()) N int(input()) int input() input A = sorted(list(map(int,input().split()))) A sorted(list(map(int,input().split()))) sorted list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split ans = [] ans [] if len(A) == 2 :
    ans.append(A[::-1])
    calc = A[1] - A[0]

else :
    ind = bisect(A,0)

    X = A[:ind]
    Y = A[ind:]
    
    if len(X) == 0 :
        ans.append([Y[0],Y[1]])
        X.append(Y[0]-Y[1])
        Y.pop(0)
        Y.pop(0)
    elif len(Y) == 0 :
        ans.append([X[-1],X[-2]])
        Y.append(X[-1]-X[-2])
        X.pop(-1)
        X.pop(-1)
    
    while True :
        if len(X) >= 2 :
            ans.append([Y[0],X[-1]])
            Y[0] -= X.pop(-1)
        elif len(Y) >= 2 :
            ans.append([X[-1],Y[0]])
            X[-1] -= Y.pop(0)
        else :
            ans.append([Y[0],X[0]])
            calc = Y.pop(0) - X.pop(0)
            break
     len(A) == 2 len(A) len A 2 ans.append(A[::-1]) ans.append ans append A[::-1] A ::-1 -1 calc = A[1] - A[0] calc A[1] - A[0] A[1] A 1 A[0] A 0 ind = bisect(A,0) ind bisect(A,0) bisect A 0 X = A[:ind] X A[:ind] A :ind ind Y = A[ind:] Y A[ind:] A ind: ind if len(X) == 0 :
        ans.append([Y[0],Y[1]])
        X.append(Y[0]-Y[1])
        Y.pop(0)
        Y.pop(0)
    elif len(Y) == 0 :
        ans.append([X[-1],X[-2]])
        Y.append(X[-1]-X[-2])
        X.pop(-1)
        X.pop(-1)
    
     len(X) == 0 len(X) len X 0 ans.append([Y[0],Y[1]]) ans.append ans append [Y[0],Y[1]] Y[0] Y 0 Y[1] Y 1 X.append(Y[0]-Y[1]) X.append X append Y[0]-Y[1] Y[0] Y 0 Y[1] Y 1 Y.pop(0) Y.pop Y pop 0 Y.pop(0) Y.pop Y pop 0 elif len(Y) == 0 :
        ans.append([X[-1],X[-2]])
        Y.append(X[-1]-X[-2])
        X.pop(-1)
        X.pop(-1)
    
     len(Y) == 0 len(Y) len Y 0 ans.append([X[-1],X[-2]]) ans.append ans append [X[-1],X[-2]] X[-1] X -1 X[-2] X -2 Y.append(X[-1]-X[-2]) Y.append Y append X[-1]-X[-2] X[-1] X -1 X[-2] X -2 X.pop(-1) X.pop X pop -1 X.pop(-1) X.pop X pop -1 while True :
        if len(X) >= 2 :
            ans.append([Y[0],X[-1]])
            Y[0] -= X.pop(-1)
        elif len(Y) >= 2 :
            ans.append([X[-1],Y[0]])
            X[-1] -= Y.pop(0)
        else :
            ans.append([Y[0],X[0]])
            calc = Y.pop(0) - X.pop(0)
            break
     True if len(X) >= 2 :
            ans.append([Y[0],X[-1]])
            Y[0] -= X.pop(-1)
        elif len(Y) >= 2 :
            ans.append([X[-1],Y[0]])
            X[-1] -= Y.pop(0)
        else :
            ans.append([Y[0],X[0]])
            calc = Y.pop(0) - X.pop(0)
            break
     len(X) >= 2 len(X) len X 2 ans.append([Y[0],X[-1]]) ans.append ans append [Y[0],X[-1]] Y[0] Y 0 X[-1] X -1 Y[0] -= X.pop(-1) Y[0] Y 0 X.pop(-1) X.pop X pop -1 elif len(Y) >= 2 :
            ans.append([X[-1],Y[0]])
            X[-1] -= Y.pop(0)
         len(Y) >= 2 len(Y) len Y 2 ans.append([X[-1],Y[0]]) ans.append ans append [X[-1],Y[0]] X[-1] X -1 Y[0] Y 0 X[-1] -= Y.pop(0) X[-1] X -1 Y.pop(0) Y.pop Y pop 0 ans.append([Y[0],X[0]]) ans.append ans append [Y[0],X[0]] Y[0] Y 0 X[0] X 0 calc = Y.pop(0) - X.pop(0) calc Y.pop(0) - X.pop(0) Y.pop(0) Y.pop Y pop 0 X.pop(0) X.pop X pop 0 break print(calc) print calc for i in range(len(ans)) :
    print(*ans[i]) i range(len(ans)) range len(ans) len ans print(*ans[i]) print *ans[i] ans[i] ans i N =int(input()) int(input()) N Y = A[ind:] A[ind:] Y ans = [] [] ans ind = bisect(A,0) bisect(A,0) ind calc = Y.pop(0) - X.pop(0) Y.pop(0) - X.pop(0) calc A = sorted(list(map(int,input().split()))) sorted(list(map(int,input().split()))) A calc = A[1] - A[0] A[1] - A[0] calc X = A[:ind] A[:ind] X
from bisect import bisect

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

ans = []

if len(A) == 2 :
    ans.append(A[::-1])
    calc = A[1] - A[0]

else :
    ind = bisect(A,0)

    X = A[:ind]
    Y = A[ind:]
    
    if len(X) == 0 :
        ans.append([Y[0],Y[1]])
        X.append(Y[0]-Y[1])
        Y.pop(0)
        Y.pop(0)
    elif len(Y) == 0 :
        ans.append([X[-1],X[-2]])
        Y.append(X[-1]-X[-2])
        X.pop(-1)
        X.pop(-1)
    
    while True :
        if len(X) >= 2 :
            ans.append([Y[0],X[-1]])
            Y[0] -= X.pop(-1)
        elif len(Y) >= 2 :
            ans.append([X[-1],Y[0]])
            X[-1] -= Y.pop(0)
        else :
            ans.append([Y[0],X[0]])
            calc = Y.pop(0) - X.pop(0)
            break
    
print(calc)
for i in range(len(ans)) :
    print(*ans[i])
