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

long long mn[1'000'005];
long long mx[1'000'005];

int main ()
{
    long long n;
    cin>>n;

    long long a[n+10];
    long long b[n+10];
    long long p[n+10];


    for (long long i=1; i<=n; i++)
    {
        cin>>a[i]>>b[i];
        mn[i]=0;
        mx[i]=n-1;
    }
    for (long long i=1; i<=n; i++) cin>>p[i];
    for (long long i=1; i<=n; i++)
    {
        if (p[i]==-1) continue;

        mx[p[i]]=min(i-1, mx[p[i]]);
        mn[p[i]+1]=max(mn[p[i]+1], i-1);
    }
    for (long long i=1; i<=n; i++)
    {
        mn[i]=max(mn[i-1], mn[i]);
    }

    long long ans=0;
    long long sum=0;
    for (long long i=1; i<=n; i++)
    {
        if (mn[i]>0) break;
        sum+=a[i];
        ans=max(ans, sum);
    }

    cout<<ans<<endl;
    return 0;
}
