#include using namespace std; using LL=long long; using ULL=unsigned long long; #define rep(i,n) for(int i=0; i<(n); i++) int N; int A[200000]; ULL M = 1000000007; int main() { cin >> N; rep(i, N) cin >> A[i]; sort(A, A + N); if (A[0] == 0) { cout << -1 << endl; return 0; } if (A[N - 1] >= 4) { cout << M << endl; return 0; } ULL T[4] = { 0,1,4,729 }; ULL ans = 1; double L = 0; rep(i, N) { ans *= T[A[i]]; L += log(T[A[i]]); } if (L >= log(1.e10) || ans > M) cout << M << endl; else cout << (M % ans) << endl; return 0; }