#include <bits/stdc++.h>
using namespace std;
stack<int> s;
priority_queue<int> pq;
long long maxm = numeric_limits<long long>::max();
const int maxn = 10005;
struct node {
  int l, r;
} q[1001];
bool cmp(node a, node b) { return a.l < b.l; }
int main() {
  int n, sum = 0;
  scanf("%d", &n);
  int a[maxn], l[maxn], r[maxn];
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    sum += a[i];
  }
  int m, tmp;
  scanf("%d", &m);
  for (int i = 1; i <= m; i++) {
    scanf("%d%d", &q[i].l, &q[i].r);
  }
  sort(q + 1, q + 1 + m, cmp);
  if (sum > q[m].r)
    printf("-1\n");
  else if (sum < q[1].l)
    printf("%d\n", q[1].l);
  else {
    for (int i = 1; i <= m; i++) {
      if (sum > q[i].r && sum < q[i + 1].l) {
        printf("%d\n", q[i + 1].l);
        break;
      } else if (sum >= q[i].l && sum <= q[i].r) {
        printf("%d\n", sum);
        break;
      }
    }
  }
  return 0;
}
