import itertools def main(): import sys sys.setrecursionlimit(1 << 25) N = int(sys.stdin.readline()) cards = sys.stdin.readline().split() ops = [c for c in cards if c in '+-'] digits = [c for c in cards if c.isdigit()] O = len(ops) D = len(digits) M = O + 1 if M > D: print("0 0") return max_val = -float('inf') min_val = float('inf') for split_indices in itertools.combinations(range(1, D), M-1): blocks = [] prev = 0 for idx in split_indices: blocks.append(digits[prev:idx]) prev = idx blocks.append(digits[prev:]) for block_order in itertools.permutations(blocks): block_perms = [] for block in block_order: perms = set(itertools.permutations(block)) block_perms.append(perms) for block_comb in itertools.product(*block_perms): num_blocks = [] for b in block_comb: num = int(''.join(b)) num_blocks.append(num) for op_order in itertools.permutations(ops): expr = [str(num_blocks[0])] for i in range(len(op_order)): expr.append(op_order[i]) expr.append(str(num_blocks[i+1])) expr_str = ''.join(expr) try: value = eval(expr_str) except: continue if value > max_val: max_val = value if value < min_val: min_val = value print(f"{max_val} {min_val}") if __name__ == "__main__": main()