#include #include #include #include #include #include #include #include #include #include #include #include #define vll vector #define vvvl vector #define vvl vector> #define VV(a, b, c, d) vector>(a, vector(b, c)) #define VVV(a, b, c, d) vector(a, vvl(b, vll (c, d))); #define re(c, b) for(ll c=0;c0){ if(b%2) ret *= num; num = num * num; b /= 2; } }else{ while(b>0){ if(b%2) ret = (ret*num)%p; num = (num*num)%p; b /= 2; } } return ret; } int main(int argc, char const *argv[]) { ll n;std::cin >> n; vll a(n);re(i, n) scanf("%lld", &a[i]); vll two, zero; for(int i=0;i1) two.push_back(i); if(a[i]==0) zero.push_back(i); } two.push_back(n); zero.push_back(n); ll P = 1000000007; ll ans = 1; for(int l=0;l=1000000000) break; t *= a[*X]; ans = (ans * t)%P; idx = (*X) + 1; } } } std::cout << ans << '\n'; return 0; }