using System;
using System.Collections.Generic;
using System.Linq;

namespace HJ41
{
    /// <summary>
    /// 核心思想:
    /// 将所有砝码即使展开到一个列表中去,
    /// 遍历列表中的所有砝码去求所有可能的和然后去重
    /// 核心推导:这次和的集合=上次的和集合 + 这次新产生的和的集合
    /// 这次新产生的和集合=上次和的集合中的和 + 新加入的砝码
    /// </summary>
    internal class Program
    {

        static void Main(string[] args)
        {
            int weightClass = int.Parse(Console.ReadLine());
            string[] weightWeightStr = Console.ReadLine().Split();
            string[] weightCountStr = Console.ReadLine().Split();

            List<int> weightList = new List<int>();

            for (int i = 0; i < weightClass; i++)
            {
                int ww = int.Parse(weightWeightStr[i]);
                int wc = int.Parse(weightCountStr[i]);
                //相同重量砝码,按数量添加到列表中
                for (int j = 0; j < wc; j++)
                {
                    weightList.Add(ww);
                }
            }

            HashSet<int> sums = new HashSet<int>();
            sums.Add(0);
            for (int i = 0; i < weightList.Count; i++)
            {
                //拿到上一次(i-1)个所有可能的和的集合
                List<int> temp = new List<int>(sums);

                //算出加上这次这个砝码生成的新和的集合
                //并将新产生的和的集合加入到最终的集合中去
                for (int j = 0; j < temp.Count; j++)
                {
                    sums.Add(temp[j] + weightList[i]);
                }
            }


            //去重,输出
            Console.WriteLine(sums.Count);
        }
    }
}