n = int(input()) a = [int(x) for x in input().split()] s = input().split() assert 1 <= n <= 2 * 10 ** 5 for x in a: assert 1 <= x <= 10 ** 9 c_add = s.count("add") c_max = s.count("max") c_min = s.count("min") """ x < 0 とはならないので min(x, y) <= max(x, y) <= add(x, y) となる """ if c_min == n: exit(print(0)) """ 最後のc_min枚はminが最適である (swapすれば明らかに解が大きくならない) 最初の1枚は明らかにaddがよい (基本は max <= add 等号成立は1枚目のみ) 葵ちゃんは最小化をしたいので「なるべくadd - maxの総和が小さくなる」事を目指す add - max = min(x, y) である よって min(x,y) の最小化と同じことである """ a.sort() if c_add == 0: print(a[c_max-1]) exit() ans = sum(a[:c_add-1]) + a[c_add + c_max - 1] if c_min != 0: ans = min(ans, a[c_add + c_max]) print(ans)