import std; void main() { int L; readf("%d\n", L); auto P = new ulong[](L), e = new ulong[](L); foreach (i; 0 .. L) readf("%d %d\n", P[i], e[i]); enum ulong M = 10 ^^ 9 + 7; ulong res = 1; foreach (i; 0 .. L) { ulong v = powmod(P[i]-1, M-2, M); ulong s = v * v % M; ulong num = powmod(P[i], e[i]+2, M); res = (res * ((s * (num + M - P[i]) % M) + M - v * (e[i] + 1) % M)) % M; } res.writeln; }