//#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}
// 全部遍历一遍之后结束整个程序即可,这个就是所能得到的所有结果