#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+1] = {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; } if(i > 0){ dp[i] *= A[i-1]; dp[i] %= mod; } cout << i << " " << dp[i] << endl; } dp[0]--; cout << dp[0] << endl; cout << mod << endl; }