#include <bits/stdc++.h>
using namespace std;
long long int mod = 998244353;
const long long int N = 2e5 + 100;
vector<long long int> v[N];
bool visited[N];
void dfs(long long int);
int main() {
  long long int i, r, b, j, k, x, m, n, t;
  cin >> t;
  while (t--) {
    cin >> n;
    long long int a[n];
    long long int bst[n + 1];
    memset(bst, 0, sizeof(bst));
    for (i = 0; i < n; i++) {
      cin >> a[i];
    }
    cin >> m;
    pair<long long int, long long int> h[m];
    for (i = 0; i < m; i++) {
      cin >> h[i].first >> h[i].second;
      bst[h[i].second] = max(bst[h[i].second], h[i].first);
    }
    for (i = n - 1; i >= 0; i--) {
      bst[i] = max(bst[i], bst[i + 1]);
    }
    long long int ans = 0;
    bool possible = true;
    i = 0;
    while (i < n) {
      ans++;
      long long int temp = i;
      long long int mx = INT_MIN;
      while (temp < n) {
        mx = max(mx, a[temp]);
        if (mx > bst[temp - i + 1]) {
          break;
        }
        temp++;
      }
      if (i == temp) {
        possible = false;
        break;
      }
      i = temp;
    }
    if (!possible) {
      cout << "-1" << endl;
    } else {
      cout << ans << endl;
    }
  }
  return 0;
}
