#include using namespace std; using lld = long long; const lld inf = 1e9; lld val[27]; vector sol(const string& s, lld p) { if(s.length() == 1) { vector res(27,-inf); for(lld i=0;i<26;i++) if(s[0] == '?' || s[0] == 'A'+i) res[i] = val[i]; res[26] = *max_element(res.begin(), res.begin()+26); return res; } vector t(p); for(lld i=0;i res(27,0); for(lld i=0;i> n >> s; lld k; cin >> k; for(lld i=0;i> a >> b; val[a-'A'] = b; } lld p = 2; if(n == 1) p = 1; else while(n%p != 0) p++; auto r = sol(s,p); cout << *max_element(r.begin(), r.end()) << "\n"; return 0; }