//#include<bits/stdc++.h>
#include <iostream>
#include <set>
#include <vector>
using namespace std;
//考点,set
int main(){
int a[10],N,temp;
while(cin>>N){
vector<int> v;
for(int i =0; i< N;i++){
cin>>a[i];
}
for(int i= 0; i< N;i++){
cin>>temp;
for(int j=0; j< temp;j++) v.push_back(a[i]);
}
set<int> s;
s.insert(0); //0也算是一个初始重量
for(int i=0; i< v.size();i++){//把所有砝码遍历完就行了
set<int> t(s);//声明这个的目的是为了每次在原来的已有重量进行配对
for(set<int>::iterator it=t.begin();it!=t.end();it++){ //set<int>::iterator 这一串可以替换为 auto
s.insert(*it+v[i]);
}
}
cout<<s.size()<<endl;
}
return 0;
}
// 利用集合去重的性质
// 先在集合里面添加0
// 当第一个砝码进来的时候
// {0} 变成 {0,0+1}->{0,1}
// 当第二个砝码进来之后
// {0,1} 变成 {0,1,0+1,1+1}--> {0,1,2}
// 当第三个砝码进来之后
// {0,1,2} 变成{0,1,2,0+2,1+2,2+2}
// ---》 {0,1,2,3,4}
// 全部遍历一遍之后结束整个程序即可,这个就是所能得到的所有结果