# 愚直DFSケース from collections import Counter N = int(input()) A = sorted(map(int, input().split())) S = Counter(input().split()) INF = 10 ** 18 def dfs(remain_A, remain_S, x): if len(remain_A) == sum(remain_S.values()) == 1: if remain_S["add"] == 1: return x + remain_A[0] elif remain_S["max"] == 1: return max(x, remain_A[0]) else: return min(x, remain_A[0]) result = -INF for i in range(len(remain_A)): val = INF if remain_S["add"] > 0: val = min(val, dfs(remain_A[:i] + remain_A[i + 1:], {"add": remain_S["add"] - 1, "max": remain_S["max"], "min": remain_S["min"]}, x + remain_A[i])) if remain_S["max"] > 0: val = min(val, dfs(remain_A[:i] + remain_A[i + 1:], {"add": remain_S["add"], "max": remain_S["max"] - 1, "min": remain_S["min"]}, max(x, remain_A[i]))) if remain_S["min"] > 0: val = min(val, dfs(remain_A[:i] + remain_A[i + 1:], {"add": remain_S["add"], "max": remain_S["max"], "min": remain_S["min"] - 1}, min(x, remain_A[i]))) result = max(result, val) return result print(dfs(A, S, 0))