1 #include <bits/stdc++.h>
2 #define dbg(x) cout << #x << "=" << x << endl
3
4 using namespace std;
5 typedef long long LL;
6 const int maxn = 3e5 + 7;
7
8 LL f[maxn];
9 char ch[maxn];
10
11 namespace _buff {
12 const size_t BUFF = 1 << 19;
13 char ibuf[BUFF], *ib = ibuf, *ie = ibuf;
14 char getc() {
15 if (ib == ie) {
16 ib = ibuf;
17 ie = ibuf + fread(ibuf, 1, BUFF, stdin);
18 }
19 return ib == ie ? -1 : *ib++;
20 }
21 }
22
23 int read() {
24 using namespace _buff;
25 int ret = 0;
26 bool pos = true;
27 char c = getc();
28 for (; (c < '0' || c > '9') && c != '-'; c = getc()) {
29 assert(~c);
30 }
31 if (c == '-') {
32 pos = false;
33 c = getc();
34 }
35 for (; c >= '0' && c <= '9'; c = getc()) {
36 ret = (ret << 3) + (ret << 1) + (c ^ 48);
37 }
38 return pos ? ret : -ret;
39 }
40
41 int main()
42 {
43 int n,a,b,c;
44 scanf("%d %d %d %d\n",&n,&a,&b,&c);
45 scanf("%s",ch+1);
46 for(int i = 0; i <= n; ++i) {
47 if(i > 0) f[i] = f[i-1];
48 if(i >= 4 && ch[i-3] == 'n' && ch[i-2] == 'i' && ch[i-1] == 'c' && ch[i] == 'o') {
49 f[i] = max(f[i], f[i-3] + a);
50 }
51 if(i >= 6 && ch[i-5] == 'n' && ch[i-4] == 'i' && ch[i-3] == 'c' && ch[i-2] == 'o' && ch[i-1] == 'n' && ch[i] == 'i') {
52 f[i] = max(f[i], f[i-5] + b);
53 }
54 if(i >= 10 && ch[i-9] == 'n' && ch[i-8] == 'i' && ch[i-7] == 'c' && ch[i-6] == 'o' && ch[i-5] == 'n' && ch[i-4] == 'i' && ch[i-3] == 'c' && ch[i-2] == 'o' && ch[i-1] == 'n' && ch[i] == 'i') {
55 f[i] = max(f[i], f[i-9] + c);
56 }
57 }
58 cout << f[n] << endl;
59 return 0;
60 }