//dp 以十个十个为单位,f[i][j]表示到第i个城市,用的牌的组合为j,j用1~15表示,二进制的四位表示四张牌,然后线性dp即可
#include <iostream>
#include <vector>
#include "bits/stdc++.h"
using namespace std;
using ll = long long;
const int maxn = 1e5+10;
ll f[maxn][16];
int main() {
int n;
scanf("%d",&n);
vector<ll>A(n+1,0);
for(int i =1;i<=n;i++){
scanf("%lld",&A[i]);
}
memset(f,-1,sizeof(f));
f[0][0] = 0;
for(int i = 1;i<=n;i++){
for(int j = 1;j<16;j++){
int cur = 1;
int d =0;
while(cur<=4){
if(j&(1<<(cur-1))){
d+=cur;
}
cur++;
}
// if(i==4){
// printf("j:%d d:%d\n",j,d);
// }
int turn_dis = i%10;
if(turn_dis == 0) turn_dis = 10;
if(d!=turn_dis) continue;
// if(d>turn_dis) break;
// printf("turndis:%d\n",turn_dis);
cur = 1;
while(cur<=4){
if(j&(1<<(cur-1))){
int pre = j^(1<<(cur-1));
// printf("i:%d j:%d cur:%d pre:%d\n",i,j,cur,pre);
// printf("f[i-cur][pre]:%lld\n",f[i-cur][pre]);
if(f[i-cur][pre]!=-1&&f[i-cur][pre]+A[i]>=0)
f[i][j] = max(f[i-cur][pre]+A[i],f[i][j]);
// printf("%d\n")
}
cur++;
}
// printf("i:%d j:%d,f[i][j]:%lld\n",i,j,f[i][j]);
}
if(i%10==0){
f[i][0] = f[i][15];
}
}
ll ans = -1;
for(int i = 0;i<=15;i++)
ans = max(ans,f[n][i]);
printf("%lld\n",ans);
// printf("%lld\n",f[n][])
}
// 64 位输出请用 printf("%lld")