#include using namespace std; using ll = long long; #define rep(i,n) for(int i = 0;i < (n);i++) int mod = 1e9+7; int main(){ int n; cin >> n; vector A(n); rep(i,n) cin >> A[i]; string s; cin >> s; s = 'x' + s; vector S(++n); rep(i,n) S[i] = s[i] - 'a'; int next_pos[n+1][26]; rep(i,26) next_pos[n][i] = -1; ll dp[n] = {0}; for(int i = n-1;i >= 0;i--){ dp[i] = 1; rep(j,26){ if(i < n-1 && S[i+1] == j)next_pos[i][j] = i+1; else next_pos[i][j] = next_pos[i+1][j]; if(next_pos[i][j] == -1)continue; dp[i] += dp[next_pos[i][j]]; dp[i] %= mod; } ll sum = dp[i] - 1; if(next_pos[i][S[i]] != -1)sum -= dp[next_pos[i][S[i]]]; sum += mod; sum %= mod; if(i > 0){ dp[i] = dp[i] + (sum+1)*(A[i-1]-1); dp[i]%= mod; } } dp[0]--; cout << dp[0] << endl; return 0; }