#include <bits/stdc++.h>
using namespace std;

using ll = long long;

const int MOD = 1e9+7;
const int N = 2e5+5;

int n, q, a[N];
int spf[N];

ll pw(ll x, ll n) {
    ll a = 1; x %= MOD;
    for (; n; n >>= 1, x = x * x % MOD)
        if (n & 1) a = a * x % MOD;
    return a;
}

void precompute() {
    iota(spf, spf + N, 0);
    for (int i = 2; i * i < N; i++)
        if (spf[i] == i)
            for (int j = i * i; j < N; j += i)
                if (spf[j] == j) spf[j] = i;
}

using T = map<int, int>;
T st[4*N];

void pull(int id) {
    st[id].clear();
    int lc = id << 1, rc = id << 1 | 1;
    if (st[lc].size() > st[rc].size()) swap(lc, rc);
    for (auto& it : st[lc]) {
        auto it2 = st[rc].find(it.first);
        if (it2 != st[rc].end()) {
            int e = min(it.second, it2->second);
            if (e > 0) st[id][it.first] = e;
        }
    }
}

void apply(int id, int x) {
    while (x > 1) {
        int p = spf[x];
        while (x % p == 0) {
            st[id][p]++;
            x /= p;
        }
    }
}

void build(int id, int l, int r) {
    if (l == r) {
        apply(id, a[l]);
        return;
    }
    int mid = (l + r) >> 1;
    build(id << 1, l, mid);
    build(id << 1 | 1, mid + 1, r);
    pull(id);
}

void update(int id, int l, int r, int p, int x) {
    if (l == r) {
        apply(id, x);
        return;
    }
    int mid = (l + r) >> 1;
    if (p <= mid) update(id << 1, l, mid, p, x);
    else update(id << 1 | 1, mid + 1, r, p, x);
    pull(id);
}

void solve() {
    cin >> n >> q;
    for (int i = 1; i <= n; i++) cin >> a[i];
    build(1, 1, n);
    while (q--) {
        int k, x; cin >> k >> x;
        update(1, 1, n, k, x);
        ll ans = 1;
        for (auto& it : st[1]) ans = ans * pw(it.first, it.second) % MOD;
        cout << ans << '\n';
    }
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    #define TASK "GCD"
    if (fopen(TASK".INP", "r")) {
        freopen(TASK".INP", "r", stdin);
        freopen(TASK".OUT", "w", stdout);
    }

    precompute();

    int tests = 1; // cin >> tests;
    while (tests--) solve();

    #ifdef LOCAL
    cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
    #endif
    return 0;
}