#ifndef MYDEBUG #include <bits/stdc++.h> #define err(...) #define errs(...) #define NO_CP(a) #define MY_ASSERT(a) #endif using namespace std; void Calc(); #define PI 3.14159265358979323846 #define ALL(a) (a).begin(),(a).end() #define RALL(a) (a).rbegin(),(a).rend() const int INF = (int)10e8; typedef long long ll; typedef unsigned long long ull; int main() { cin.tie(0); ios::sync_with_stdio(false); cout.setf(ios::fixed, ios::floatfield); cout.precision(15); Calc(); cout.flush(); return 0; } struct Scanner { NO_CP(Scanner); template<class A = string>static A Next() { A a; cin >> a; MY_ASSERT(cin); return a; } static string Line() { string s; getline(cin, s); MY_ASSERT(cin); return s; } template<class A = int>static vector<A> Array(int n) { vector<A> a(n); for (A& i : a) i = Next<A>(); return a; } static int Int() { return Next<int>(); } template<class A> Scanner& operator>>(A &a) { a = Next<A>(); return *this; } template<class A> operator A() { return Next<A>(); } }; template<> bool Scanner::Next<bool>() { return !!cin; } /*---------------------------------------------------------------------*/ void Calc() { Scanner cin; int n = cin; auto a = cin.Array(n); auto b = cin.Array(n); map<int, int> m; for (int i = 0; i < n; i++) { m[b[i]] += a[i]; } int maxi = 0; for (auto& i : m) { maxi = max(maxi, i.second); } if (m[0] >= maxi) { cout << "YES" << endl; } else { cout << "NO" << endl; } }