#include <iostream> #include <vector> #include<map> #include <algorithm> #include<math.h> #include<set> using namespace std; int n; set<int> solution; vector<int> m; vector<int> num; void backtrack(int t,int w) { if (t == n) { solution.insert(w); return; } for (int i = 0; i <= num[t]; i++) { w += m[t]*i; backtrack(t + 1, w); w -= m[t] * i; } } int main() { cin >> n; for (int i = 0; i < n; i++) { int t; cin >> t; m.push_back(t); } for (int i = 0; i < n; i++) { int t; cin >> t; num.push_back(t); } backtrack(0, 0); cout << solution.size(); return 0; }