Scanf.scanf "%d" (fun n ->
    let a = Array.init n (fun _ -> Scanf.scanf " %d" (fun a -> a)) in

    let judge1 d = d = n - 1 || d <= n / 2 in

    let judge2 d1 c1 d2 c2 =
        let d1, c1, d2, c2 = if d1 < d2 then d1, c1, d2, c2
                                        else d2, c2, d1, c1
        in
        d1 + 1 = d2 && d2 * 2 - n <= c1 && c1 <= d2 - 1
    in

    let rec loop2 i d1 c1 d2 c2 =
        if i = n then judge2 d1 c1 d2 c2 else
            if a.(i) = d1 then loop2 (i + 1) d1 (c1 + 1) d2 c2 else
            if a.(i) = d2 then loop2 (i + 1) d1 c1 d2 (c2 + 1) else false
    in

    let rec loop i d1 c1 =
        if i = n then judge1 d1 else
            if a.(i) = d1 then loop (i + 1) d1 (c1 + 1)
                         else loop2 (i + 1) d1 c1 a.(i) 1
    in
    loop 1 a.(0) 1 |> (fun k -> print_endline @@  if k then "Yes" else "No")
)