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=[0 for i in range(N)] D=[0 for i in range(N)] m=0 for i in range(N): p,q=map(int,input().split()) C[i]=p D[i]=q m=max(m,p) dp=[[1 for i in range(m+1)],[0 for i in range(m+1)]] for i in range(m): dp[0][i+1]=(dp[0][i]+dp[1][i])%MOD dp[1][i+1]=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)