#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;
}
}