from collections import deque
N = int(input())
A = list(map(int,input().split()))
A.sort()
if len(A) == 2:
    print(A[1]-A[0])
    print(A[1],A[0])
    exit()
posi = deque([])
nega = deque([])
for i in A:
    if i < 0:
        nega.append(i)
    else:
        posi.append(i)
ans = []
if len(posi) == 0:
    x = nega.pop()
    y = nega.pop()
    posi.append(x-y)
    ans.append([x,y])
if len(nega) == 0:
    x = posi.popleft()
    y = posi.popleft()
    nega.append(x-y)
    ans.append([x,y])

while len(posi) > 1:
    x = nega.pop()
    y = posi.pop()
    ans.append([x,y])
    nega.append(x-y)
while len(nega) > 0:
    x = posi.pop()
    y = nega.pop()
    ans.append([x,y])
    posi.append(x-y)

print(posi[0])
for i in range(N-1):
    print(' '.join(map(str,ans[i]))) from collections import deque 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 if len(A) == 2:
    print(A[1]-A[0])
    print(A[1],A[0])
    exit() len(A) == 2 len(A) len A 2 print(A[1]-A[0]) print A[1]-A[0] A[1] A 1 A[0] A 0 print(A[1],A[0]) print A[1] A 1 A[0] A 0 exit() exit posi = deque([]) posi deque([]) deque [] nega = deque([]) nega deque([]) deque [] for i in A:
    if i < 0:
        nega.append(i)
    else:
        posi.append(i) i A if i < 0:
        nega.append(i)
    else:
        posi.append(i) i < 0 i 0 nega.append(i) nega.append nega append i posi.append(i) posi.append posi append i ans = [] ans [] if len(posi) == 0:
    x = nega.pop()
    y = nega.pop()
    posi.append(x-y)
    ans.append([x,y]) len(posi) == 0 len(posi) len posi 0 x = nega.pop() x nega.pop() nega.pop nega pop y = nega.pop() y nega.pop() nega.pop nega pop posi.append(x-y) posi.append posi append x-y x y ans.append([x,y]) ans.append ans append [x,y] x y if len(nega) == 0:
    x = posi.popleft()
    y = posi.popleft()
    nega.append(x-y)
    ans.append([x,y]) len(nega) == 0 len(nega) len nega 0 x = posi.popleft() x posi.popleft() posi.popleft posi popleft y = posi.popleft() y posi.popleft() posi.popleft posi popleft nega.append(x-y) nega.append nega append x-y x y ans.append([x,y]) ans.append ans append [x,y] x y while len(posi) > 1:
    x = nega.pop()
    y = posi.pop()
    ans.append([x,y])
    nega.append(x-y) len(posi) > 1 len(posi) len posi 1 x = nega.pop() x nega.pop() nega.pop nega pop y = posi.pop() y posi.pop() posi.pop posi pop ans.append([x,y]) ans.append ans append [x,y] x y nega.append(x-y) nega.append nega append x-y x y while len(nega) > 0:
    x = posi.pop()
    y = nega.pop()
    ans.append([x,y])
    posi.append(x-y) len(nega) > 0 len(nega) len nega 0 x = posi.pop() x posi.pop() posi.pop posi pop y = nega.pop() y nega.pop() nega.pop nega pop ans.append([x,y]) ans.append ans append [x,y] x y posi.append(x-y) posi.append posi append x-y x y print(posi[0]) print posi[0] posi 0 for i in range(N-1):
    print(' '.join(map(str,ans[i]))) i range(N-1) range N-1 N 1 print(' '.join(map(str,ans[i]))) print ' '.join(map(str,ans[i])) ' '.join ' ' join map(str,ans[i]) map str ans[i] ans i ans = [] [] ans x = nega.pop() nega.pop() x x = posi.pop() posi.pop() x N = int(input()) int(input()) N y = posi.popleft() posi.popleft() y y = posi.pop() posi.pop() y A = list(map(int,input().split())) list(map(int,input().split())) A y = nega.pop() nega.pop() y x = posi.popleft() posi.popleft() x posi = deque([]) deque([]) posi y = nega.pop() nega.pop() y x = nega.pop() nega.pop() x nega = deque([]) deque([]) nega
from collections import deque
N = int(input())
A = list(map(int,input().split()))
A.sort()
if len(A) == 2:
    print(A[1]-A[0])
    print(A[1],A[0])
    exit()
posi = deque([])
nega = deque([])
for i in A:
    if i < 0:
        nega.append(i)
    else:
        posi.append(i)
ans = []
if len(posi) == 0:
    x = nega.pop()
    y = nega.pop()
    posi.append(x-y)
    ans.append([x,y])
if len(nega) == 0:
    x = posi.popleft()
    y = posi.popleft()
    nega.append(x-y)
    ans.append([x,y])

while len(posi) > 1:
    x = nega.pop()
    y = posi.pop()
    ans.append([x,y])
    nega.append(x-y)
while len(nega) > 0:
    x = posi.pop()
    y = nega.pop()
    ans.append([x,y])
    posi.append(x-y)

print(posi[0])
for i in range(N-1):
    print(' '.join(map(str,ans[i])))
