#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e5 + 7;
const int maxn = 5e5 + 7;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long c[maxn];
int n, m;
map<vector<int>, long long> ma;
vector<int> ve[maxn];
int main() {
  int T;
  scanf("%d", &T);
  while (T--) {
    scanf("%d %d", &n, &m);
    for (int i = 1; i <= n; i++) scanf("%lld", &c[i]);
    for (int i = 1; i <= m; i++) {
      int a, b;
      scanf("%d %d", &a, &b);
      ve[b].push_back(a);
    }
    for (int i = 1; i <= n; i++) {
      if (((int)(ve[i]).size())) {
        sort(ve[i].begin(), ve[i].end());
        ma[ve[i]] += c[i];
      }
    }
    long long ans = 0;
    for (auto i : ma) {
      ans = gcd(i.second, ans);
    }
    printf("%lld\n", ans);
    ma.clear();
    for (int i = 1; i <= n; i++) ve[i].clear();
  }
  return 0;
}
