#python2
while True:
try:
n=int(input())
m=map(int,raw_input().split())
x=map(int,raw_input().split())
diff={0}
for i in range(n):#在确定前面砝码的基础上依次添加各个质量的砝码,每次添加后查看是否和之前的有重复
d=diff.copy()#重复的不计入
for j in range(x[i]):
for k in d:
temp=k+m[i]*(j+1)#因为添加砝码是从一个开始添加,依次添加到每种砝码的最大数量(x[i]),所以此处为j+1
if temp not in d:#否则就是从0添加到x[i]-1个砝码
diff.add(temp)
print(len(diff))
except:
break #python3
while True:
try:
n=int(input())
m=list(map(int,input().split()))#python3这块没有python2来的直接,需要用list转换一下
x=list(map(int,input().split()))
diff={0}
for i in range(n):
d=diff.copy()
for j in range(x[i]):
for k in d:
temp=k+m[i]*(j+1)
if temp not in d:
diff.add(temp)
print(len(diff))
except:
break #include <iostream>
#include <vector>
#include <algorithm>//用到find()函数
using namespace std;
int fama(int n, int *weight, int *nums){//C++函数接口用指针,不同于题目给的接口
vector<int> res;//存入已经称好的砝码质量
res.push_back(0);
for(int i=1;i<=nums[0];i++)
res.push_back(i*weight[0]);//将第一个砝码能称出的质量放入res,即依次放入1、2、...、x[0]个砝码,这些砝码的质量都为m[0]
for(int i=1;i<n;i++){//依次添加后续质量的砝码
int len=res.size();
for(int j=1;j<=nums[i];j++){
for(int k=0;k<len;k++){
int w=res[k]+j*weight[i];
if(find(res.begin(),res.end(),w)==res.end())
res.push_back(w);
}
}
}
int len=res.size();
return len;
}
int main(){
int n,res;
int m[10]={0};
int x[10]={0};
while(cin >> n){
for(int i=0;i<n;i++)
cin >> m[i];
for(int i=0;i<n;i++)
cin >> x[i];
res=fama(n, m, x);
cout << res << endl;
}
return 0;
}