#include <bits/stdc++.h>
using namespace std;
#define int              long long int
#define double           long double
#define print(a)         for(auto x : a) cout << x << " "; cout << endl







//_ ***************************** START Below *******************************

// n = 1  10000
// -10000   <=   <=  10000
// a[0] = 0


const int M = 1000000007;
const int N = 10010;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;

vector<int> isPrime;
vector<int> primes;

void seive(){
    isPrime.assign(N+1, 1);
    isPrime[0] = isPrime[1] = 0;
    
    for(int i = 2; i<=N; i++){
        if(isPrime[i] == 0) continue;
        
        for(int j=2*i; j<=N; j+=i){
            isPrime[j] = 0;
        }
    }
    
    for(int i=3; i<=N; i++){
    	if(isPrime[i] && i%10 == 3){
    		primes.push_back(i);
    	}
    }
}


 
int maxGameScore(vector<int> a){
	static int _ = (seive(), 0);
	
	
	int n = a.size();
	
	vector<int> dp(n, -INF);
	
	dp[0] = 0;
	
	
	for(int i=1; i<n; i++){
		
		if(dp[i-1] != -INF)	dp[i] = dp[i-1] + a[i];
		
		for(auto p : primes){
			if(i-p >= 0){
				if(dp[i-p] != -INF)
					dp[i] = max( dp[i] , dp[i-p] + a[i] );
			}
			else break;
		}
		
	}
	
	cout << "a : ";
	print(a);
	
	cout << " dp : ";
	print(dp);
	
	return dp[n-1];
}









void solve() {
	
	
	int n;
	cin >> n;
	
	vector<int> a(n);
	for(int i=0; i<n; i++) cin >> a[i];
	
	cout << maxGameScore(a) << endl;

}





int32_t main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int t = 1;
    while (t--) {
        solve();
    }

    return 0;
}