def paw(a,b): ret=1 i=b temp=a while i>0: if i%2: ret=(ret*temp)%MOD i=i//2 temp=(temp**2)%MOD return ret N=int(input()) ans=1 MOD=10**9+7 C=[] D=[] m=0 for i in range(N): p,q=map(int,input().split()) C.append(p) D.append(q) m=max(m,p) dp=[[1],[0]] for i in range(m): dp[0].append((dp[0][i]+dp[1][i])%MOD) dp[1].append(dp[0][i]%MOD) for i in range(N): ans=(ans*paw((dp[0][C[i]]+dp[1][C[i]])%MOD,D[i]))%MOD print(ans)