#include <iostream>
#include <vector>
#include <set>
using namespace std;
//将个数和重量全部组合一次,组合结果存入set中,会自动去重,最后输出set个数即为能组合的最大方案数
int main() {
    int n;
    while(cin>>n){
        vector<int> w(n);
        vector<int> num(n);
        set<int> st;
        for(int i=0;i<n;i++)
            cin>>w[i];
        for(int i=0;i<n;i++)
            cin>>num[i]; 

        st.insert(0);//0是一种方案
        for(int i=0;i<n;i++){//对于每一种重量的砝码
            for(int j=1;j<=num[i];j++){
                set<int> temp(st);// 相当于重新设置一个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: temp)
                st.insert(it + w[i]);
            }
        }
        cout<< st.size()<<endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")