#include using namespace std; typedef long long ll; ll i,j,p,q,m,k,price[30],A,M,B,D,H,Score,minScore,d,l,r,step[30]; clock_t T; string redici[30],nach[30]; string text; string f; ll place[30]; unordered_map used; stack st; pair alphabet[30]; ll len; struct Answer { vector red; vector > operations; } ans,tek; void read() { freopen("printing.in","r",stdin); freopen("printing.out","w",stdout); } void input() { cin>>d; d--; cin>>text; cin>>A>>B>>M>>D>>H; for(i=1; i<=27; i++) cin>>price[i]; } void output() { //cout<0) alphabet[++len]=make_pair(-used[c],c); } if(used['_']>0) alphabet[++len]=make_pair(-used['_'],'_'); sort(alphabet+1,alphabet+len+1); ll br_red; for(ll br_red=1; br_red<=min(27ll,len); br_red++) { while(!st.empty()) st.pop(); tek.operations.clear(); Score=price[br_red]; for(i=1; i<=br_red-1; i++) redici[i]=""; p=len/br_red; q=1; //if(used['_']>0)redici[1].push_back('_'); //place[27]=1; for(j=1; j<=br_red; j++) { for(i=q; i<=q+p-1; i++) { redici[j].push_back(alphabet[i].second); place[Code(alphabet[i].second)]=j; } q=q+p; } for(i=q; i<=len; i++) { redici[br_red].push_back(alphabet[i].second); place[Code(alphabet[i].second)]=br_red; } /** for(i=1;i<=br_red;i++) cout<r) { k--; tek.operations.push_back(make_pair("w",k+1)); Score+=Calc(k+1); f=redici[p].substr(0,k+1); //cout<=0;Dnum--) { T=clock(); if(T>=4200)break; while(!st.empty()) st.pop(); tek.operations.clear(); f="";br_red=0; for(i=len-1;i>=0;i--) { if((step[i]&Dnum)) { nach[++br_red]=f; f=alphabet[len-i].second; } else f.push_back(alphabet[len-i].second); } nach[++br_red]=f; p=br_red;br_red=0; for(i=1;i<=p;i++) if(nach[i]!="")redici[++br_red]=nach[i]; for(i=1;i<=br_red;i++) { for(auto j:redici[i]) place[Code(j)]=i; } /** cout<r) { k--; tek.operations.push_back(make_pair("w",k+1)); Score+=Calc(k+1); f=redici[p].substr(0,k+1); //cout<