#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
struct commodity
{
    int type;
    int taste;
    int flag;
}com[55];
int n;
void check(int j)
{
    for(int i=0;i<n;i++)
    {
        if(com[i].type==com[j].type)
            com[i].flag=1;
    }
}
int cmp(commodity com1,commodity com2)
{
    return com1.taste<com2.taste;
} 
int main()
{
    int j;
    memset(com,0,sizeof(commodity)*55);
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>com[i].type;
    for(int i=0;i<n;i++)
        cin>>com[i].taste;
    sort(com,com+n,cmp);
    for(int i=0;i<n;i++)
    {
        if(com[i].taste>=0)
        {
             j=i;
            break;
        }
    }
    int x=0,y=0;
    for(int i=j;i<n;i++)
    {
        if(com[i].flag==0)
        {
            x++;
            check(i);
        }
        y+=com[i].taste;
    }
    long long ans,temp=0;
    ans=x*y;
    for(int i=j-1;i>=0;i--)
    {
        int x1,y1;
        x1=x;y1=y;
        if(com[i].flag==0)
        {
            x1++;
            check(i);
        }
        y1+=com[i].taste;
        temp=x1*y1;
        if(temp>ans)
        {
            ans=temp;
            x=x1;
            y=y1;
        }
    }
    cout<<ans;
    return 0;
}