#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN=1001;
int a[MAXN],b[MAXN],s[MAXN],ans[MAXN];
bool vis[MAXN][MAXN],dp[MAXN][MAXN];
signed main()
{
int n;
scanf("%lld",&n);
for(int i(1);i<=n;++i)
scanf("%lld",&a[i]);
for(int i(1);i<=n;++i)
{
scanf("%lld",&b[i]);
s[i]=s[i-1]+b[i];
dp[i][i+1]=(__gcd(a[i],a[i+1])>1?1:0);
}
for(int i(1);i<=n;++i)
{
for(int j(1);j<=n;++j)
vis[i][j]=(__gcd(a[i],a[j])>1?1:0);
}
for(int k(1);k<=n;++k)
{
for(int i(k);i>0;--i)
{
for(int j(k+1);j<=n;++j)
{
if(vis[i][j])
{
dp[i][j]|=dp[i+1][j-1];
if(j>k+1)
dp[i][j]|=(dp[i][k]&dp[k+1][j]&dp[k][k+1]);
}
}
}
}
for(int i(1);i<=n;++i)
{
ans[i]=ans[i-1];
for(int j(1);j<=i;++j)
if(dp[j][i])
ans[i]=max(ans[i],ans[j-1]-s[j-1]+s[i]);
}
printf("%lld",ans[n]);
}