#include using namespace std; const long long maxn = 64; long long n,a,b,m,d,h; long long p_r[maxn]; long long idx[maxn]; long long r_cnt = 0; long long sum_1 = 0; long long sum_2 = 0; long long used1[maxn]; vector< pair< string, long long > >ans1; string s; void read() { cin>>n; cin>>s; cin>>a>>b>>m>>d>>h; for(long long i=1; i<=27; i++) { cin >> p_r[i]; } } void solve1() { for( long long i = 0; i < n; i++) { long long t = 0; if( s[i] == '_' ) t = 27; else t = s[i] - 'a' + 1; if( idx[t] == 0 ) { r_cnt += 1; idx[t] = r_cnt; } } sum_1 += p_r[r_cnt]; for( long long i = 0; i < n-1; i++ ) { sum_1 += m; ///cout << "w" << " " << 1 << endl; pair < string, long long > p1( "w", 1 ); ans1.push_back(p1); long long t = 0; if( s[i+1] == '_' ) t = 27; else t = s[i+1] - 'a' + 1; sum_1 += d; ///cout << "cd" << " " << idx[t] << endl; pair < string, long long > p2( "cd", idx[t] ); ans1.push_back(p2); } sum_1 += m; ///cout << "w" << " " << 1 << endl; pair < string, long long > p3( "w", 1 ); ans1.push_back(p3); } void print1() { cout << r_cnt << endl; for( long long i = 0; i < n; i++ ) { if( s[i] == '_' ) { if( used1[27] == 0 ) { cout << "_" << endl; used1[27] = 1; } } else { long long t = s[i] - 'a' + 1; if( used1[t] == 0 ) { cout << char('a' + t - 1 ) << endl; used1[t] = 1; } } } long long t_br = 0; long long sz = ans1.size(); vector< pair< string , long long > > n_ans1; for( long long i = 0; i < sz; i++ ) { if( ans1[i].first == "w" ) t_br += 1; else { if( t_br > 0 ) { pair< string , long long > p1( "w" , t_br ); n_ans1.push_back( p1 ); t_br = 0; } pair< string , long long > p2( ans1[i].first , ans1[i].second ); n_ans1.push_back( p2 ); } } if( t_br > 0 ) { pair< string , long long > p3( "w" , t_br ); n_ans1.push_back( p3 ); } long long n_sz = n_ans1.size(); cout << n_sz << endl; for( long long i = 0; i < n_sz; i++ ) { if( n_ans1[i].second != -1 ) cout << n_ans1[i].first << " " << n_ans1[i].second << endl; else cout << n_ans1[i].first << endl; } } long long cl [maxn][maxn]; long long cr [maxn][maxn]; long long used2 [maxn]; vector< pair< string, long long > >ans2; void solve2() { deque< char > q; vector< char > v; for( long long i = 0; i < n; i++ ) { long long t = 0; if( s[i] == '_' ) t = 27; else t = s[i] - 'a' + 1; if( used2[t] == 0 ) { q.push_back( s[i] ); v.push_back( s[i] ); used2[t] = 1; } } long long cnt = v.size(); for(long long i=0; i p1( "w", 1 ); ans2.push_back(p1); for(long long i=1; i p2( "cl", -1 ); ans2.push_back(p2); } ans += 1; x = q.front(); q.pop_front(); q.push_back(x); sum_2 += m; /// cout << "w" << " " << 1 << endl; pair< string, long long > p3( "w", 1 ); ans2.push_back(p3); } else { long long br = cr[l][t]; char x; for(long long j = 1; j <= br; j++) { ans += 1; x = q.back(); q.pop_back(); q.push_front(x); sum_2 += b; /// cout << "cr"<< endl; pair< string, long long > p4( "cr", -1 ); ans2.push_back(p4); } ans += 1; x = q.front(); q.pop_front(); q.push_back(x); sum_2 += m; /// cout << "w" << " " << 1 << endl; pair< string, long long > p5( "w", 1 ); ans2.push_back(p5); } } } void print2() { memset(used2,0,sizeof(used2)); cout << 1 << endl; for( long long i = 0; i < n; i++ ) { long long t = 0; if( s[i] == '_' ) t = 27; else t = s[i] - 'a' + 1; if( used2[t] == 0 ) { cout << s[i]; used2[t] = 1; } } cout << endl; long long t_br = 0; long long sz = ans2.size(); vector< pair< string , long long > > n_ans2; for( long long i = 0; i < sz; i++ ) { if( ans2[i].first == "w" ) t_br += 1; else { if( t_br > 0 ) { pair< string , long long > p1( "w" , t_br ); n_ans2.push_back( p1 ); t_br = 0; } pair< string , long long > p2( ans2[i].first , ans2[i].second ); n_ans2.push_back( p2 ); } } if( t_br > 0 ) { pair< string , long long > p3( "w" , t_br ); n_ans2.push_back( p3 ); } long long n_sz = n_ans2.size(); cout << n_sz << endl; for( long long i = 0; i < n_sz; i++ ) { if( n_ans2[i].second != -1 ) cout << n_ans2[i].first << " " << n_ans2[i].second << endl; else cout << n_ans2[i].first << endl; } } int main() { freopen("printing.in","r",stdin); freopen("printing.out","w",stdout); read(); solve1(); solve2(); if( sum_1 <= sum_2 ) print1(); else print2(); return 0; }