#include <bits/stdc++.h>
const int N = (1 << 20) + 5;
const int MAX = 0x7fffffff;
const int MIN = -MAX - 1;
int n, m, a[111], d[21], p[N], f[N];
char c[21];
bool cmp(const int x, const int y) { return x > y; }
int main() {
  int i, j, x, y;
  scanf("%d", &n);
  for (i = 1; i <= n; ++i) scanf("%d", a + i);
  std::sort(a + 1, a + n + 1, cmp);
  scanf("%d", &n);
  for (i = 1; i <= n; ++i) scanf(" %c %d", c + i, d + i);
  m = (1 << n) - 1;
  p[0] = 0;
  for (i = 1; i <= m; ++i) p[i] = p[i >> 1] + (i & 1);
  f[m] = 0;
  for (i = m - 1; i >= 0; --i) {
    f[i] = d[x = p[i] + 1] == 2 ? MAX : MIN;
    for (j = 1; j <= n; ++j) {
      y = 1 << (j - 1);
      if (i & y || f[i ^ y] == MAX || f[i ^ y] == MIN) continue;
      if (d[x] == 1) {
        if (c[x] == 'p')
          f[i] = std::max(f[i], f[i ^ y] + a[j]);
        else
          f[i] = std::max(f[i], f[i ^ y]);
      } else {
        if (c[x] == 'p')
          f[i] = std::min(f[i], f[i ^ y] - a[j]);
        else
          f[i] = std::min(f[i], f[i ^ y]);
      }
    }
  }
  printf("%d", f[0]);
  return 0;
}
