using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
 
class Program
{
    public void Proc()
    {
        Reader.IsDebug = false;
        int mondaiCount = int.Parse(Reader.ReadLine());
        int[] haiten = Reader.GetInt();
        int[] kaitou = Reader.GetInt();
        
        Dictionary<int, int> tokuten = new Dictionary<int, int>();
        for(int i=0;i<haiten.Length; i++) {
            if(!tokuten.ContainsKey(kaitou[i])) {
                tokuten.Add(kaitou[i], haiten[i]);
            } else
            {
                tokuten[kaitou[i]]+=haiten[i];
            }
        }
        string ans  = "NO";
        if(tokuten.ContainsKey(0) && tokuten[0] == tokuten.Max(a=>a.Value)) {
            ans = "YES";
        }
        Console.WriteLine(ans);
        

    }

    public class Reader
    {
        public static bool IsDebug = true;
        private static String PlainInput = @"



3
10 20 30
0 0 1



 
";
        private static System.IO.StringReader Sr = null;
        public static string ReadLine()
        {
            if (IsDebug)
            {
                if (Sr == null)
                {
                    Sr = new System.IO.StringReader(PlainInput.Trim());
                }
                return Sr.ReadLine();
            }
            else
            {
                return Console.ReadLine();
            }
        }
        public static int[] GetInt(char delimiter = ' ', bool trim = false)
        {
            string inptStr = ReadLine();
            if (trim)
            {
                inptStr = inptStr.Trim();
            }
            string[] inpt = inptStr.Split(delimiter);
            int[] ret = new int[inpt.Length];
            for (int i = 0; i < inpt.Length; i++)
            {
                ret[i] = int.Parse(inpt[i]);
            }
            return ret;
        }
    }
    static void Main()
    {
        Program prg = new Program();
        prg.Proc();
    }
}