int n, m; int c[kMaxN]; int64_t a[kMaxN]; std::vector<int> G[kMaxN];
voiddickdreamer(){ std::cin >> n >> m; for (int i = 1; i <= n; ++i) std::cin >> c[i]; for (int i = 1; i <= m; ++i) { int u, v; std::cin >> u >> v; G[u].emplace_back(v); } int ans = 1; a[1] = 1; for (int i = 1; i <= n; ++i) { int coef = c[i] / std::__gcd((int)a[i], c[i]); ans = 1ll * ans * coef % kMod; for (int j = i; j <= n; ++j) a[j] *= coef; for (int j = i; j <= n; ++j) { for (auto k : G[j]) { a[k] += a[j] / c[j]; } a[j] %= c[j]; } } std::cout << ans << '\n'; }