#include <bits/stdc++.h>
using ll = long long;
using namespace std;

int main() {
    ll i,j,n,k,t,q;
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n;
    vector<ll>A(n),B(n),P(n),L(n),R(n);
    for (i=0;i<n;i++) {
        cin>>A[i]>>B[i];
        L[i]=0,R[i]=i;
    }
    for (i=0;i<n;i++) {
        cin>>P[i];
    }
    ll last=0,pos=-1;
    ll mnk=0;
    for (i=0;i<n;i++) {
        if (P[i]!=-1) {
            mnk=max(mnk,P[i]);
            for (j=last;j<P[i];j++) {
                L[j]=max(L[j],pos+1);
                R[j]=min(R[j],i);
            }
            last=P[i];
            pos=i;
        }
    }
    ll ans=0;
    vector<ll>prev(n);
    vector<ll>dp(n);
    prev[0]=A[0];
    if (mnk<=1) {
        ans=max(ans,prev[0]);
    }
    for (i=1;i<n;i++) {
        ll mx=-1e18;
        for (j=L[i-1];j<L[i];j++) {
            mx=max(mx,prev[j]);
        }
        for (j=L[i];j<=R[i];j++) {
            if (j<=R[i-1]) {
                mx=max(mx,prev[j]);
            }
            dp[j]=A[i]+B[i]*j+mx;
            if (i+1>=mnk) {
                ans=max(ans,dp[j]);
            }
        }
        swap(prev,dp);
    }
    cout<<ans<<'\n';
    return 0;
}