# C - Successive Subtraction

N = int(input())
A = list(int(a) for a in input().split())

M = []
P = []
for a in A:
    if a >= 0:
        P.append(a)
    else:
        M.append(a)

P.sort(reverse=True)
M.sort()
lenP = len(P)
lenM = len(M)    

ans = []
anssum = 0

if lenM ==0:
    if lenP >= 3:
        ans.append((P[-1], P[-2]))
        tmp = P.pop() - P.pop()
        M.append(tmp)
        lenP -= 2
    else:
        ans.append((P[-2], P[-1]))
        tmp = P.pop() - P.pop()
        tmp *= -1
        P.append(tmp)
        lenP -= 2
elif lenP ==0:
    ans.append((M[-1], M[-2]))
    tmp = M.pop() - M.pop()
    P.append(tmp)
    lenP += 1
for i in range(lenP-1):
    ans.append((M[-1], P[-1]))
    tmp = M.pop() - P.pop()
    M.append(tmp)
while M != []:
    ans.append((P[-1], M[-1]))
    tmp = P.pop() - M.pop()
    P.append(tmp)
anssum = P.pop()

print(anssum)
for i in range(len(ans)):
    print(' '.join(map(str, ans[i]))) N = int(input()) N int(input()) int input() input A = list(int(a) for a in input().split()) A list(int(a) for a in input().split()) list int(a) int a M = [] M [] P = [] P [] for a in A:
    if a >= 0:
        P.append(a)
    else:
        M.append(a) a A if a >= 0:
        P.append(a)
    else:
        M.append(a) a >= 0 a 0 P.append(a) P.append P append a M.append(a) M.append M append a P.sort(reverse=True) P.sort P sort reverse=True reverse True M.sort() M.sort M sort lenP = len(P) lenP len(P) len P lenM = len(M) lenM len(M) len M ans = [] ans [] anssum = 0 anssum 0 if lenM ==0:
    if lenP >= 3:
        ans.append((P[-1], P[-2]))
        tmp = P.pop() - P.pop()
        M.append(tmp)
        lenP -= 2
    else:
        ans.append((P[-2], P[-1]))
        tmp = P.pop() - P.pop()
        tmp *= -1
        P.append(tmp)
        lenP -= 2
elif lenP ==0:
    ans.append((M[-1], M[-2]))
    tmp = M.pop() - M.pop()
    P.append(tmp)
    lenP += 1 lenM ==0 lenM 0 if lenP >= 3:
        ans.append((P[-1], P[-2]))
        tmp = P.pop() - P.pop()
        M.append(tmp)
        lenP -= 2
    else:
        ans.append((P[-2], P[-1]))
        tmp = P.pop() - P.pop()
        tmp *= -1
        P.append(tmp)
        lenP -= 2 lenP >= 3 lenP 3 ans.append((P[-1], P[-2])) ans.append ans append (P[-1], P[-2]) P[-1] P -1 P[-2] P -2 tmp = P.pop() - P.pop() tmp P.pop() - P.pop() P.pop() P.pop P pop P.pop() P.pop P pop M.append(tmp) M.append M append tmp lenP -= 2 lenP 2 ans.append((P[-2], P[-1])) ans.append ans append (P[-2], P[-1]) P[-2] P -2 P[-1] P -1 tmp = P.pop() - P.pop() tmp P.pop() - P.pop() P.pop() P.pop P pop P.pop() P.pop P pop tmp *= -1 tmp -1 P.append(tmp) P.append P append tmp lenP -= 2 lenP 2 elif lenP ==0:
    ans.append((M[-1], M[-2]))
    tmp = M.pop() - M.pop()
    P.append(tmp)
    lenP += 1 lenP ==0 lenP 0 ans.append((M[-1], M[-2])) ans.append ans append (M[-1], M[-2]) M[-1] M -1 M[-2] M -2 tmp = M.pop() - M.pop() tmp M.pop() - M.pop() M.pop() M.pop M pop M.pop() M.pop M pop P.append(tmp) P.append P append tmp lenP += 1 lenP 1 for i in range(lenP-1):
    ans.append((M[-1], P[-1]))
    tmp = M.pop() - P.pop()
    M.append(tmp) i range(lenP-1) range lenP-1 lenP 1 ans.append((M[-1], P[-1])) ans.append ans append (M[-1], P[-1]) M[-1] M -1 P[-1] P -1 tmp = M.pop() - P.pop() tmp M.pop() - P.pop() M.pop() M.pop M pop P.pop() P.pop P pop M.append(tmp) M.append M append tmp while M != []:
    ans.append((P[-1], M[-1]))
    tmp = P.pop() - M.pop()
    P.append(tmp) M != [] M [] ans.append((P[-1], M[-1])) ans.append ans append (P[-1], M[-1]) P[-1] P -1 M[-1] M -1 tmp = P.pop() - M.pop() tmp P.pop() - M.pop() P.pop() P.pop P pop M.pop() M.pop M pop P.append(tmp) P.append P append tmp anssum = P.pop() anssum P.pop() P.pop P pop print(anssum) print anssum 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 tmp *= -1 -1 tmp tmp = P.pop() - M.pop() P.pop() - M.pop() tmp ans = [] [] ans tmp = M.pop() - M.pop() M.pop() - M.pop() tmp A = list(int(a) for a in input().split()) list(int(a) for a in input().split()) A P = [] [] P lenP += 1 1 lenP lenP -= 2 2 lenP tmp = M.pop() - P.pop() M.pop() - P.pop() tmp M = [] [] M anssum = P.pop() P.pop() anssum tmp = P.pop() - P.pop() P.pop() - P.pop() tmp lenP -= 2 2 lenP lenP = len(P) len(P) lenP lenM = len(M) len(M) lenM tmp = P.pop() - P.pop() P.pop() - P.pop() tmp anssum = 0 0 anssum N = int(input()) int(input()) N
# C - Successive Subtraction

N = int(input())
A = list(int(a) for a in input().split())

M = []
P = []
for a in A:
    if a >= 0:
        P.append(a)
    else:
        M.append(a)

P.sort(reverse=True)
M.sort()
lenP = len(P)
lenM = len(M)    

ans = []
anssum = 0

if lenM ==0:
    if lenP >= 3:
        ans.append((P[-1], P[-2]))
        tmp = P.pop() - P.pop()
        M.append(tmp)
        lenP -= 2
    else:
        ans.append((P[-2], P[-1]))
        tmp = P.pop() - P.pop()
        tmp *= -1
        P.append(tmp)
        lenP -= 2
elif lenP ==0:
    ans.append((M[-1], M[-2]))
    tmp = M.pop() - M.pop()
    P.append(tmp)
    lenP += 1
for i in range(lenP-1):
    ans.append((M[-1], P[-1]))
    tmp = M.pop() - P.pop()
    M.append(tmp)
while M != []:
    ans.append((P[-1], M[-1]))
    tmp = P.pop() - M.pop()
    P.append(tmp)
anssum = P.pop()

print(anssum)
for i in range(len(ans)):
    print(' '.join(map(str, ans[i])))
