import sys from typing import List, Tuple def int1(x: str, /): return int(x) - 1 def input(): return sys.stdin.readline().rstrip('\n') def dbg(*args, **kwargs): print(*(repr(arg) for arg in args), *(f'{k}: {repr(v)}' for k, v in kwargs.items()), sep='; ', file=sys.stderr) def mm(a, b): m = 10 ** 9 + 7 a00, a01, a10, a11 = a b00, b01, b10, b11 = b return ((a00 * b00 + a01 * b10) % m, (a00 * b01 + a01 * b11) % m, (a10 * b00 + a11 * b10) % m, (a10 * b01 + a11 * b11) % m) def pp(a, b): if b == 0: return 1, 0, 0, 1 if b % 2 == 1: return mm(pp(a, b - 1), a) c = pp(a, b // 2) return mm(c, c) def solve(c, d): m = 10 ** 9 + 7 return pow(pp((1, 1, 1, 0), 2 + c)[1], d, m) def main(): m = 10 ** 9 + 7 n = int(input()) ans = 1 for _ in range(n): c, d = map(int, input().split()) ans = ans * solve(c, d) % m return ans def _start(): ret = main() if ret is not None: if isinstance(ret, List) or isinstance(ret, Tuple): print(*ret) else: print(ret) if __name__ == '__main__': _start()