# include <iostream>
using namespace std;

template<class T> void chmax(T& A, const T& B) {A=max(A,B);}

const long long INF=1e18;

struct line
{
    long long a,b;
    long long val(long long x)
    {
        return a*x+b;
    }
};

const int MAX=5e3+11;

int n;
line a[MAX];
int p[MAX];

long long dp[MAX][MAX];

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

    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i].b>>a[i].a;
    for(int i=1;i<=n;i++)
    {
        cin>>p[i];
        p[i]=max(p[i],p[i-1]);
    }

    for(int i=0;i<=n;i++)
    {
        for(int j=0;j<=n;j++) dp[i][j]=-INF;
    }
    dp[0][0]=0;

    long long ans=-INF;
    for(int t=0;t<n;t++)
    {
        for(int last=0;last<n;last++)
        {
            if(last<p[t]) continue;
            if(last>0) ans=max(ans,dp[t][last]);
            if(t<last+1) chmax(dp[t][last+1],dp[t][last]+a[last+1].val(t));
            ans=max(ans,dp[t][last+1]);
            chmax(dp[t+1][last],dp[t][last]);
        }
    }

    cout<<ans<<"\n";

    return 0;
}

