import bisect

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

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

pl.sort()
ml.sort()

ans = 0
ans_l = []


if pl and ml:
    ans = ml[0]
    for p in pl[1:]:
        ans_l.append((ans,p))
        ans -= p
    ans_l.append((pl[0], ans))
    ans = pl[0] - ans
    for m in ml[1:]:
        ans_l.append((ans,m))
        ans -= m

elif not pl: # only ml
    ans = ml[-1]
    for m in ml[:-1]:
        ans_l.append((ans,m))
        ans -= m

else: # only pl
    ans = pl[0]
    for p in pl[1:-1]:
        ans_l.append((ans,p))
        ans -= p
    ans_l.append((pl[-1], ans))
    ans = pl[-1] - ans

print(ans)
for row in ans_l:
    print(row[0], row[1]) import bisect bisect n = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split A = list(map(int, input().split())) A list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split pl= [] pl [] ml = [] ml [] for a in A:
    if a >= 0: pl.append(a)
    else: ml.append(a) a A if a >= 0: pl.append(a)
    else: ml.append(a) a >= 0 a 0 pl.sort() pl.sort pl sort ml.sort() ml.sort ml sort ans = 0 ans 0 ans_l = [] ans_l [] if pl and ml:
    ans = ml[0]
    for p in pl[1:]:
        ans_l.append((ans,p))
        ans -= p
    ans_l.append((pl[0], ans))
    ans = pl[0] - ans
    for m in ml[1:]:
        ans_l.append((ans,m))
        ans -= m

elif not pl: # only ml
    ans = ml[-1]
    for m in ml[:-1]:
        ans_l.append((ans,m))
        ans -= m

else: # only pl
    ans = pl[0]
    for p in pl[1:-1]:
        ans_l.append((ans,p))
        ans -= p
    ans_l.append((pl[-1], ans))
    ans = pl[-1] - ans pl and ml pl ml ans = ml[0] ans ml[0] ml 0 for p in pl[1:]:
        ans_l.append((ans,p))
        ans -= p
     p pl[1:] pl 1: 1 ans_l.append((ans,p)) ans_l.append ans_l append (ans,p) ans p ans -= p ans p ans_l.append((pl[0], ans)) ans_l.append ans_l append (pl[0], ans) pl[0] pl 0 ans ans = pl[0] - ans ans pl[0] - ans pl[0] pl 0 ans for m in ml[1:]:
        ans_l.append((ans,m))
        ans -= m m ml[1:] ml 1: 1 ans_l.append((ans,m)) ans_l.append ans_l append (ans,m) ans m ans -= m ans m elif not pl: # only ml
    ans = ml[-1]
    for m in ml[:-1]:
        ans_l.append((ans,m))
        ans -= m not pl pl ans = ml[-1] ans ml[-1] ml -1 for m in ml[:-1]:
        ans_l.append((ans,m))
        ans -= m m ml[:-1] ml :-1 -1 ans_l.append((ans,m)) ans_l.append ans_l append (ans,m) ans m ans -= m ans m ans = pl[0] ans pl[0] pl 0 for p in pl[1:-1]:
        ans_l.append((ans,p))
        ans -= p
     p pl[1:-1] pl 1:-1 1 -1 ans_l.append((ans,p)) ans_l.append ans_l append (ans,p) ans p ans -= p ans p ans_l.append((pl[-1], ans)) ans_l.append ans_l append (pl[-1], ans) pl[-1] pl -1 ans ans = pl[-1] - ans ans pl[-1] - ans pl[-1] pl -1 ans print(ans) print ans for row in ans_l:
    print(row[0], row[1]) row ans_l print(row[0], row[1]) print row[0] row 0 row[1] row 1 ans -= p p ans ans = pl[0] pl[0] ans ans = 0 0 ans ans = ml[0] ml[0] ans A = list(map(int, input().split())) list(map(int, input().split())) A ans = pl[0] - ans pl[0] - ans ans ans_l = [] [] ans_l ans -= m m ans pl= [] [] pl ans = ml[-1] ml[-1] ans ml = [] [] ml ans -= m m ans ans -= p p ans n = map(int, input().split()) map(int, input().split()) n ans = pl[-1] - ans pl[-1] - ans ans
import bisect

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

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

pl.sort()
ml.sort()

ans = 0
ans_l = []


if pl and ml:
    ans = ml[0]
    for p in pl[1:]:
        ans_l.append((ans,p))
        ans -= p
    ans_l.append((pl[0], ans))
    ans = pl[0] - ans
    for m in ml[1:]:
        ans_l.append((ans,m))
        ans -= m

elif not pl: # only ml
    ans = ml[-1]
    for m in ml[:-1]:
        ans_l.append((ans,m))
        ans -= m

else: # only pl
    ans = pl[0]
    for p in pl[1:-1]:
        ans_l.append((ans,p))
        ans -= p
    ans_l.append((pl[-1], ans))
    ans = pl[-1] - ans

print(ans)
for row in ans_l:
    print(row[0], row[1])