#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;
}