#include <bits/stdc++.h>
using namespace std;
int a[101],cr[101],b[26];
int main(){
	int n;scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",a+i);
	n=100;
	for(int i=51;i<=100;i++)if(a[i]<0)a[i]=0;
	for(int i=1;i<=25;i++)for(int j=i+i;j<=25;j+=i)b[i]|=1<<j-1;
	long long ans=0;
	for(int tt=0;tt<1<<25;tt++){
		bool bad=false;
		long long a2=0;
		for(int i=1;i<=25;i++)if((tt&1<<i-1)&&(tt&b[i])){
			bad=true;break;
		}
		if(bad)continue;
		for(int i=1;i<=n;i++)cr[i]=a[i];
		for(int i=1;i<=25;i++)if(tt&1<<i-1)for(int j=i;j<=n;j+=i)cr[j]=0;
		for(int i=26;i<=50;i++){
			if(i%2==0 && 3*i/2 <= 50){
				long long t[4]={
					0LL+cr[i]+cr[3*i/2]+cr[i+i]+cr[i+i+i],
					cr[i]+cr[i+i],
					cr[3*i/2],
					0
				};
				int x=max_element(t,t+4)-t;
				if(x&1)cr[3*i/2]=cr[i+i+i]=0;
				if(x>=2)cr[i]=cr[i+i]=cr[i+i+i]=0;
			}
			else if(3*i <= 100){
				if(0LL+cr[i]+cr[i+i]+cr[i+i+i]<0)cr[i]=cr[i+i]=cr[i+i+i]=0;
			}
			else{
				if(cr[i]+cr[i+i]<0)cr[i]=cr[i+i]=0;
			}
		}
		for(int i=1;i<=100;i++)a2+=cr[i];
		ans=max(ans,a2);
	}
	printf("%lld\n",ans);
}