N = int(eval(input()))

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



S = sum(map(abs,A))



if all([a>0 for a in A]):

    print((S-2*min(A)))

    A = sorted(A)

    B = [A[0]]

    for i in range(1,N):

        B.append(B[-1]-A[i])

    for i in range(N-2):

        print((B[i],A[i+1]))

    print((A[N-1],B[N-2]))



elif all([a<0 for a in A]):

    print((S+2*max(A)))

    A = sorted(A)

    B = [A[-1]]

    for i in range(N-1):

        B.append(B[-1]-A[i])

    for i in range(N-1):

        print((B[i],A[i]))



else:

    print(S)

    A = sorted(A)

    B = [A[0]]

    for i in range(N):

        if N-1-2-i<0 or A[-2-i]<0:

            print((A[-1-i],B[-1]))

            B.append(A[-1-i]-B[-1])

            break

        print((B[-1],A[-1-i]))

        B.append(B[-1]-A[-1-i])

    C = [B[-1]]

    for i in range(1,N):

        if A[i]>=0:

            break

        print((C[-1],A[i]))

        C.append(C[-1]-A[i])
N = int(eval(input()))

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



A.sort()

S = sum(A)



if A[0] >= 0:

    print((S - A[0] * 2))

    tmp = A[0]

    for i in range(1, N - 1):

        print((tmp, A[i]))

        tmp -= A[i]

    print((A[-1], tmp))



elif A[-1] <= 0:

    print((-S + A[-1] * 2))

    tmp = A[-1]

    for i in range(1, N):

        print((tmp, A[~i]))

        tmp -= A[~i]



else:

    op = []

    tmp1 = A[-1]

    i = 1

    while A[i] < 0:

        op.append((tmp1, A[i]))

        tmp1 -= A[i]

        i += 1

    tmp2 = A[0]

    i = 1

    while A[~i] >= 0:

        op.append((tmp2, A[~i]))

        tmp2 -= A[~i]

        i += 1

    print((tmp1 - tmp2))

    for x, y in op:

        print((x, y))

    print((tmp1, tmp2))
N = int(eval(input()))
A = list(map(int, input().split()))
S = sum(map(abs, A))
if all([a > 0 for a in A]):
    print((S - 2 * min(A)))
    A = sorted(A)
    B = [A[0]]
    for i in range(1, N):
        B.append(B[-1] - A[i])
    for i in range(N - 2):
        print((B[i], A[i + 1]))
    print((A[N - 1], B[N - 2]))
elif all([a < 0 for a in A]):
    print((S + 2 * max(A)))
    A = sorted(A)
    B = [A[-1]]
    for i in range(N - 1):
        B.append(B[-1] - A[i])
    for i in range(N - 1):
        print((B[i], A[i]))
else:
    print(S)
    A = sorted(A)
    B = [A[0]]
    for i in range(N):
        if N - 1 - 2 - i < 0 or A[-2 - i] < 0:
            print((A[-1 - i], B[-1]))
            B.append(A[-1 - i] - B[-1])
            break
        print((B[-1], A[-1 - i]))
        B.append(B[-1] - A[-1 - i])
    C = [B[-1]]
    for i in range(1, N):
        if A[i] >= 0:
            break
        print((C[-1], A[i]))
        C.append(C[-1] - A[i])

N = int(eval(input()))
A = list(map(int, input().split()))
A.sort()
S = sum(A)
if A[0] >= 0:
    print((S - A[0] * 2))
    tmp = A[0]
    for i in range(1, N - 1):
        print((tmp, A[i]))
        tmp -= A[i]
    print((A[-1], tmp))
elif A[-1] <= 0:
    print((-S + A[-1] * 2))
    tmp = A[-1]
    for i in range(1, N):
        print((tmp, A[~i]))
        tmp -= A[~i]
else:
    op = []
    tmp1 = A[-1]
    i = 1
    while A[i] < 0:
        op.append((tmp1, A[i]))
        tmp1 -= A[i]
        i += 1
    tmp2 = A[0]
    i = 1
    while A[~i] >= 0:
        op.append((tmp2, A[~i]))
        tmp2 -= A[~i]
        i += 1
    print((tmp1 - tmp2))
    for x, y in op:
        print((x, y))
    print((tmp1, tmp2))

-S = sum(map(abs, A)) -if all([a > 0 for a in A]): -    print((S - 2 * min(A))) -    A = sorted(A) -    B = [A[0]] +A.sort() +S = sum(A) +if A[0] >= 0: +    print((S - A[0] * 2)) +    tmp = A[0] +    for i in range(1, N - 1): +        print((tmp, A[i])) +        tmp -= A[i] +    print((A[-1], tmp)) +elif A[-1] <= 0: +    print((-S + A[-1] * 2)) +    tmp = A[-1] -        B.append(B[-1] - A[i]) -    for i in range(N - 2): -        print((B[i], A[i + 1])) -    print((A[N - 1], B[N - 2])) -elif all([a < 0 for a in A]): -    print((S + 2 * max(A))) -    A = sorted(A) -    B = [A[-1]] -    for i in range(N - 1): -        B.append(B[-1] - A[i]) -    for i in range(N - 1): -        print((B[i], A[i])) +        print((tmp, A[~i])) +        tmp -= A[~i] -    print(S) -    A = sorted(A) -    B = [A[0]] -    for i in range(N): -        if N - 1 - 2 - i < 0 or A[-2 - i] < 0: -            print((A[-1 - i], B[-1])) -            B.append(A[-1 - i] - B[-1]) -            break -        print((B[-1], A[-1 - i])) -        B.append(B[-1] - A[-1 - i]) -    C = [B[-1]] -    for i in range(1, N): -        if A[i] >= 0: -            break -        print((C[-1], A[i])) -        C.append(C[-1] - A[i]) +    op = [] +    tmp1 = A[-1] +    i = 1 +    while A[i] < 0: +        op.append((tmp1, A[i])) +        tmp1 -= A[i] +        i += 1 +    tmp2 = A[0] +    i = 1 +    while A[~i] >= 0: +        op.append((tmp2, A[~i])) +        tmp2 -= A[~i] +        i += 1 +    print((tmp1 - tmp2)) +    for x, y in op: +        print((x, y)) +    print((tmp1, tmp2))