#include"bits/stdc++.h"
using namespace std;
/*
题解:
将所有的砝码,包括重复的砝码,当成是字符串,然后将set从0开始,设置一个新的set容器,
将字符串里面的一次与这个新的set容器里面的数值相加,并添加到旧的set容器内;
在下一次循环,将之前旧的容器设置成新的容器,在重复上面的步骤;
*/
int main()
{
int n ;
while(cin>>n)
{
vector<int> v;
set<int> s;
int a[n], b[n], temp;
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]); //此处很细节,就是将所有(包括重复的砝码重量)砝码重量当成是字符串;
}
s.insert(0);
for(int i = 0 ; i < v.size(); i++)
{
set<int> t(s); // 相当于重新设置一个set,并将之前的s插入到t中,对t遍历,
/*
如果直接遍历原来的s,假如s里面是0,1,2;你现在v[i]是1,那么应该对s插入1,2,3,
当你插入3的时候s.size()增加1,变成0,1,2,3;这时候会继续遍历s最后一位3,
s插入3+1=4,s变成0,1,2,3,4;s.size()再增加1,s继续插入4+1,之后无限循环不会停止
*/
for(auto it = t.begin(); it != t.end(); it++)
s.insert(*it + v[i]);
}
cout<<s.size()<<endl;
}
return 0;
}