#include <bits/stdc++.h>
using namespace std;
const int N = 105;
const int maxn = 1e7 + 6;
bitset<N> seen;
int in[N];
int n, m;
int cmd[25], g[25];
pair<int, int> p[25];
bool ready[maxn];
pair<int, int> cache[maxn];
pair<int, int> operator+(pair<int, int> &a, pair<int, int> &b) {
  return {a.first + b.first, a.second + b.second};
}
bool chk(pair<int, int> a, pair<int, int> b, int pl) {
  if (pl == 1) {
    return a.first - a.second > b.first - b.second;
  }
  return a.second - a.first > b.second - b.first;
}
pair<int, int> foo(int x, int val) {
  const int S = val;
  if (x == m) return {0, 0};
  if (ready[val]) return cache[val];
  ready[val] = true;
  pair<int, int> rv = {0, 0};
  cache[S] = rv;
  if (cmd[x] == 1) {
    int id = 0, mx = 0;
    for (int i = 0; i < n; ++i) {
      if ((val >> i) & 1) continue;
      if (in[i] > mx) {
        mx = in[i];
        id = i;
      }
    }
    val |= (1 << id);
    pair<int, int> w = foo(x + 1, val);
    rv = rv + w;
    if (g[x] == 1)
      rv.first += mx;
    else
      rv.second += mx;
    cache[S] = rv;
    return rv;
  } else {
    pair<int, int> mx = {-1, -1};
    int id;
    for (int i = 0; i < n; ++i)
      if (!((val >> i) & 1)) {
        val ^= (1 << i);
        auto p = foo(x + 1, val);
        if (mx.first == -1) {
          mx = p;
          id = i;
        } else if (chk(p, mx, g[x])) {
          mx = p;
          id = i;
        }
        val ^= (1 << i);
      }
    val ^= (1 << id);
    pair<int, int> w = foo(x + 1, val);
    rv = rv + w;
    cache[S] = rv;
    return rv;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = 0; i < n; ++i) cin >> in[i];
  sort(in, in + n, greater<int>());
  while (n > 20) n--;
  cin >> m;
  for (int i = 0; i < m; ++i) {
    char c;
    int x;
    cin >> c >> x;
    if (c == 'p')
      cmd[i] = 1;
    else
      cmd[i] = 0;
    g[i] = x;
  }
  auto it = foo(0, 0);
  cout << it.first - it.second << "\n";
}
