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

ans_list = []
p = []
n = []

# 最大にプラス、最小にマイナスを割り当てる
p.append(A[-1])
n.append(A[0])

# 正ならプラスを負ならマイナスを割り当てる
for a in A[1:-1]:
    if a >= 0:
        p.append(a)
    elif a < 0:
        n.append(a)

# プラスが１つになるまで消す
res = n[0]
for ep in p[1:]:
    ans_list.append((res, ep))
    res -= ep
n[0] = res
p = [p[0]]

# マイナスがなくなるまで消す
res = p[0]
for en in n:
    ans_list.append((res, en))
    res -= en

# 残ったものが最大値
M = res
print(M)
for x, y in ans_list:
    print(x, y) 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_list = [] ans_list [] p = [] p [] n = [] n [] p.append(A[-1]) p.append p append A[-1] A -1 n.append(A[0]) n.append n append A[0] A 0 for a in A[1:-1]:
    if a >= 0:
        p.append(a)
    elif a < 0:
        n.append(a)

# プラスが１つになるまで消す a A[1:-1] A 1:-1 1 -1 if a >= 0:
        p.append(a)
    elif a < 0:
        n.append(a)

# プラスが１つになるまで消す a >= 0 a 0 p.append(a) p.append p append a elif a < 0:
        n.append(a)

# プラスが１つになるまで消す a < 0 a 0 n.append(a) n.append n append a res = n[0] res n[0] n 0 for ep in p[1:]:
    ans_list.append((res, ep))
    res -= ep ep p[1:] p 1: 1 ans_list.append((res, ep)) ans_list.append ans_list append (res, ep) res ep res -= ep res ep n[0] = res n[0] n 0 res p = [p[0]] p [p[0]] p[0] p 0 res = p[0] res p[0] p 0 for en in n:
    ans_list.append((res, en))
    res -= en

# 残ったものが最大値 en n ans_list.append((res, en)) ans_list.append ans_list append (res, en) res en res -= en res en M = res M res print(M) print M for x, y in ans_list:
    print(x, y) x y ans_list print(x, y) print x y res = p[0] p[0] res M = res res M n = [] [] n res = n[0] n[0] res p = [p[0]] [p[0]] p N = int(input()) int(input()) N p = [] [] p res -= en en res A = sorted(list(map(int,input().split()))) sorted(list(map(int,input().split()))) A ans_list = [] [] ans_list res -= ep ep res
N = int(input())
A = sorted(list(map(int,input().split())))

ans_list = []
p = []
n = []

# 最大にプラス、最小にマイナスを割り当てる
p.append(A[-1])
n.append(A[0])

# 正ならプラスを負ならマイナスを割り当てる
for a in A[1:-1]:
    if a >= 0:
        p.append(a)
    elif a < 0:
        n.append(a)

# プラスが１つになるまで消す
res = n[0]
for ep in p[1:]:
    ans_list.append((res, ep))
    res -= ep
n[0] = res
p = [p[0]]

# マイナスがなくなるまで消す
res = p[0]
for en in n:
    ans_list.append((res, en))
    res -= en

# 残ったものが最大値
M = res
print(M)
for x, y in ans_list:
    print(x, y)