#include using namespace std; #define rep(i,n) for(int i=0; i<(n); i++) #define INF ((1LL<<62)-(1LL<<31)) #define all(a) (a).begin(),(a).end() #define rall(a) (a).rbegin(),(a).rend() typedef long long ll; typedef pair pl; const ll mod=1000000007; ll modpow(ll n,ll r) { ll num=1; while(r) { if(r&1) num=num*n%mod; n=n*n%mod; r/=2; } return num; } int main() { ll n; cin >> n; vector a; ll tot=1; rep(i,n) { ll x; cin >> x; if(x==0) break; a.push_back(x); tot*=a[i]; tot%=mod; } if((int)a.size()==0) { cout << 0 << endl; return 0; } reverse(all(a)); ll ans=tot,num=2; tot*=modpow(a[0],mod-2); tot%=mod; for(int i=1;i<(int)a.size();i++) { ans=(ans+(tot*num)%mod)%mod; tot*=modpow(a[i],mod-2); tot%=mod; num*=3; num%=mod; } cout << ans << endl; return 0; }