//Normal #define _GLIBCXX_DEBUG #define ll long long #include using namespace std; using Graph = vector>; void print(auto a){ cout << a; } void prints(auto a){ cout << a << " "; } void prints(){ cout << " "; } void printl(auto a){ cout << a << endl; } void printl(){ cout << endl; } void fix(int n){ cout << fixed << setprecision(n); } int siz(string s){ return (int)s.size(); } int main(){ int N; cin >> N; vector A(N), B(N); for(int i = 0; i < N; i++) cin >> A[i]; for(int i = 0; i < N; i++) cin >> B[i]; string S = ""; for(int i = 0; i < N; i++) S = S + to_string(i); map mp; do{ int sum = 0; for(int i = 0; i < N; i++){ int j = S[i]-'0'; sum += max(0, A[j]-B[i]); } mp[sum]++; }while(next_permutation(S.begin(), S.end())); int ans; for(auto p: mp){ ans = p.second; } printl(ans); return 0; }