#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
void speed()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
}
long long int n,a[1000005],dp[5005][5005],otg=0;
int b[1000005],c[1000005];
void read()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i]>>b[i];
    }
    long long int p=0,to=1,last=0;
    for(int i=1;i<=n;i++)
    {
        cin>>c[i];
    }
    for(int i=1;i<=n;i++)
    {
        if(c[i]!=-1)
        {
            last=i-1;
            for(long long int j=to;j<=c[i];j++)
            {
                p+=a[j]+b[j]*max(last,j-1);
            }
            to=c[i]+1;
        }
    }
    otg=p;
    for(int j=to;j<=n;j++)
    {
        p+=a[j]+b[j]*(j-1);
        otg=max(otg,p);
    }
    cout<<otg<<endl;
}
int main()
{
    speed();
    read();
	return 0;
}
