open System
open System.Collections.Generic

module InputUtility =
    let InputTokens = new Queue<string>()

    let EnsureInput () =
        if InputTokens.Count = 0 then
            let input = Console.ReadLine ()
            let s = input.Split ([|' '|], StringSplitOptions.RemoveEmptyEntries)
            if s.Length > 0 then
                for x in s do InputTokens.Enqueue(x)
                true
            else false
        else true

    let rec ReadNext () =
        if EnsureInput () then InputTokens.Dequeue ()
        else ReadNext ()

    let ReadNextInt () = ReadNext () |> int

    let Read2Int () = ReadNextInt (), ReadNextInt ()

    let Read3Int () = ReadNextInt (), ReadNextInt (), ReadNextInt ()

    let ReadListOf f n =
        let rec loop acc = function
            | 0 -> List.rev acc
            | c -> loop ((ReadNext () |> f) :: acc) (c-1)
        loop [] n

    let MultipleCaseWithId f =
        let caseNum = ReadNextInt ()
        let rec loop index =
            if index = caseNum then ()
            else
                f index
                loop (index + 1)
        loop 0

    let MultipleCase f = MultipleCaseWithId (fun _ -> f ())

    let ReadList n =
        let rec loop acc = function
            | 0 -> List.rev acc
            | c -> loop (ReadNext () :: acc) (c-1)
        loop [] n

open InputUtility

module AGC016 =
    let private ``Colorful Hats`` () =
        let n = ReadNextInt ()
        let arr = ReadListOf int n |> Seq.countBy id |> Seq.toArray
        //printfn "arr: %A" arr
        let valid =
            match arr.Length with
            | 1 ->
                let x, _ = arr.[0]
                if n = 1 then x = 0
                else x + 1 = n || x * 2 <= n
            | 2 ->
                let x1, a = min arr.[0] arr.[1]
                let x, _ = max arr.[0] arr.[1]
                //printfn "%d %d | %d %d | %d" x1 a x (n - a) (a + x * 2 - a * 2)
                x1 + 1 = x && a < x && a + (x - a) * 2 <= n
            | _ -> false
        if valid then "Yes" else "No"
        |> printfn "%s"

    let Entry = ``Colorful Hats``

AGC016.Entry ()