import sys
from itertools import permutations, combinations

def main():
    input = sys.stdin.read().split()
    N = int(input[0])
    cards = input[1:N+1]
    
    digits = []
    ops = []
    for c in cards:
        if c in '+-':
            ops.append(c)
        else:
            digits.append(c)
    op_count = len(ops)
    k = op_count + 1
    num_digits = len(digits)
    
    if op_count == 0:
        print(''.join(digits))
        return
    
    from itertools import chain, combinations
    def generate_splits(n, k):
        if k == 1:
            return [[n]]
        splits = []
        for c in combinations(range(1, n), k-1):
            prev = 0
            parts = []
            for pos in c:
                parts.append(pos - prev)
                prev = pos
            parts.append(n - prev)
            splits.append(parts)
        return splits
    
    splits = generate_splits(num_digits, k)
    
    unique_ops = {}
    for p in set(permutations(ops)):
        unique_ops[p] = True
    op_perms = list(unique_ops.keys())
    
    max_val = -float('inf')
    min_val = float('inf')
    
    for split in splits:
        for op_perm in op_perms:
            sorted_desc = sorted(digits, key=lambda x: -int(x))
            groups_max = []
            remaining = sorted_desc.copy()
            current_val = 0
            for i in range(k):
                s = split[i]
                if i == 0:
                    group = remaining[:s]
                    remaining = remaining[s:]
                    groups_max.append(int(''.join(group)))
                else:
                    op = op_perm[i-1]
                    if op == '+':
                        group = remaining[:s]
                        remaining = remaining[s:]
                        groups_max.append(int(''.join(group)))
                    else:
                        group = remaining[-s:]
                        remaining = remaining[:-s]
                        groups_max.append(int(''.join(sorted(group))))
            expr_val = groups_max[0]
            for i in range(len(op_perm)):
                if op_perm[i] == '+':
                    expr_val += groups_max[i+1]
                else:
                    expr_val -= groups_max[i+1]
            if expr_val > max_val:
                max_val = expr_val
            
            sorted_asc = sorted(digits, key=lambda x: int(x))
            groups_min = []
            remaining = sorted_asc.copy()
            for i in range(k):
                s = split[i]
                if i == 0:
                    group = remaining[:s]
                    remaining = remaining[s:]
                    groups_min.append(int(''.join(group)))
                else:
                    op = op_perm[i-1]
                    if op == '+':
                        group = remaining[:s]
                        remaining = remaining[s:]
                        groups_min.append(int(''.join(sorted(group))))
                    else:
                        group = remaining[-s:]
                        remaining = remaining[:-s]
                        groups_min.append(int(''.join(sorted(group, reverse=True))))
            expr_val_min = groups_min[0]
            for i in range(len(op_perm)):
                if op_perm[i] == '+':
                    expr_val_min += groups_min[i+1]
                else:
                    expr_val_min -= groups_min[i+1]
            if expr_val_min < min_val:
                min_val = expr_val_min
    
    print(f"{max_val} {min_val}")

if __name__ == '__main__':
    main()