#include <iostream>
#include <vector>
#include <math.h>

using namespace std;

int main()
{
    int duzinaVektora;
    cin>>duzinaVektora;

    vector <char> niz (duzinaVektora);

    for(int i=0; i<duzinaVektora; i++){
        cin>>niz[i];
    }

    //napraviti uzlazno rastuci vektor

    for(int i=0; i<niz.size()-1; i++){
        if(niz[i+1]-niz[i]>2||niz[i+1]-niz[i]<0){
            niz.erase(niz.begin()+i+1);
            //cout<<"duzina niza posle smanjivanja je "<<niz.size()<<endl;
        }
    }

    /*for(int i=0; i<duzinaVektora; i++){
        cout<<niz[i];
    }
    cout<<endl;*/

    int brojKombinacija=1;

    /*for(int j=0; j<niz.size()-1; j++){
        if((niz[j+1]-niz[j]!=0&&niz[j+1]-niz[0]!=1)||niz.size()<26){
            cout<<0;
            break;
        }
    }*/

    unsigned int isti=1;

    for(int i=0; i<niz.size()-1; i++){
        if(niz[i]==niz[i+1]){
            isti++;
            //cout<<i<<". i "<<i+1<<". ("<<niz[i]<<" i "<<niz[i+1]<<") su isti"<<endl;
        }
        if(niz[i]!=niz[i+1]||i==niz.size()-2){
            brojKombinacija*=isti;
            //cout<<brojKombinacija<<"*="<<isti<<endl;
            isti=1;
        }
    }

    cout<<brojKombinacija%(unsigned int)(pow(10,9)+7);
}