// @yuuzaa_tkms #include #include #define rep(i, n) for(int i = 0; i < (int)(n); i++) #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define Ye cout<<"Yes"<dx={0,1,0,-1,-1,-1,1,1}; vectordy={1,0,-1,0,-1,1,-1,1}; int INF=1e9; ull LINF=1e18; bool edge(int x,int y,int H,int W){ if(x<0||x>=H||y<0||y>=W)return 0; else return 1; } //実装は丁寧に書こう //1400復帰しよう! int main(){ int N; cin>>N; string A; cin>>A; int now=0; bool z=0,o=0; mint ans=1; rep(i,N){ now++; if(A[i]=='0')z=1; if(A[i]=='1')o=1; if(i!=N-1&&A[i]=='1'&&A[i+1]=='0'){ if(z&&o)ans*=now+1; now=0; z=0; o=0; } } if(z&&o)ans*=now+1; cout<