#include <iostream>
#include <string>
#include <vector>
#include <unordered_set>

using namespace std;

/*
思路:n=2, m = {1,2},x = {2,1}, 因此 0,1 = 1 + 0, 2 = 1+ 1 或0+2,3 = 1+2, 4 = 1*2 + 2, 因此{0,1,2,3,4},共5种
出现重复需要去重,unordered_set方法
*/
int accountNums(vector<int> weight, vector<int> num)
{
    int out;
    unordered_set<int> accountNumsSet;
    accountNumsSet.insert(0); // 第一种0
    for(int i = 0; i < weight.size(); i++) {
        for(int j = 1; j <= num[i]; j++) {
             unordered_set<int> tempSet(accountNumsSet);
            for(auto iter = tempSet.begin(); iter != tempSet.end(); iter++) {
                accountNumsSet.insert(*iter + weight[i]);
            }
        }
    }
    out = accountNumsSet.size();
    return out;
    
}
int main()
{
    int n;
    while(cin>>n) {
        vector<int> weight(n);
        vector<int> num(n);
        for(int i = 0; i < n; i++) {
            int weightTemp = 0;
            cin>>weightTemp;
            weight.push_back(weightTemp);
        }
        for(int i = 0; i < n; i++) {
            int numTemp = 0;
            cin>>numTemp;
            num.push_back(numTemp);
        }
        cout<<accountNums(weight, num)<<endl;
    }
    
}