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

#ifdef _RUTHEN
#include "debug.hpp"
#else
#define show(...) true
#endif

using ll = long long;
#define rep(i, n) for (int i = 0; i < (n); i++)
#define ALL(x) begin(x), end(x)
template <class T> using V = vector<T>;

#include <atcoder/modint>
using namespace atcoder;
using mint = modint1000000007;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    ll L;
    cin >> L;
    mint ans = 1;
    rep(i, L) {
        ll P, e;
        cin >> P >> e;
        mint pi = P;
        mint ret = 0;
        ret += (pi.pow(e + 1) - 1) / (P - 1) * P;
        ret -= (e + 1);
        ret /= (P - 1);
        ans *= ret;
    }
    cout << ans.val() << '\n';
    return 0;
}