#include using namespace std; //template int size(const T &x) { return x.size(); } #define rep(i,a,b) for (auto i=(a); i<(b); ++i) #define iter(it,c) for (auto it = (c).begin(); it != (c).end(); ++it) typedef pair ii; typedef vector vi; typedef vector vii; typedef vector vvi; typedef long long ll; const int INF = 2147483647; int main() { int n; cin >> n; ll ans = 0, starts = 0, cnt = 0, mod = 1000000007; rep(i,0,n) { int x; cin >> x; if (x == 1) { cnt++; cnt %= mod; starts++; } else if (x == 2) { cnt *= 2; cnt %= mod; } else { ans += cnt; ans %= mod; ans += mod - starts; ans %= mod; } } cout << ans << endl; return 0; }