import std.stdio, std.string, std.conv, std.algorithm;
import std.range, std.array, std.math, std.typecons, std.functional;

void main() {
    int n = readln.chomp.to!int;
    int[] a = readln.split.to!(int[]);

    if (n == 2) {
        writeln("Yes");
        return;
    }

    a.sort();

    if (a[$ - 1] - a[0] > 1) {
        writeln("No");
        return;
    }

    if (a[0] == 1) {
        if (a[$ - 1] == a[0] || a[0] < a[1]) {
            writeln("Yes");
        }
        else {
            writeln("No");
        }
    }
    else {
        int k = a[0];
        int l = a.count(k).to!int - 1;

        if (a[$ - 1] == a[0]) {
            if (2*k - 1 <= n - 1 || k == n - 1) {
                writeln("Yes");
            }
            else {
                writeln("No");
            }
        }
        else {
            if (l <= k && 2*(k - l) <= n - 1 - l) {
                writeln("Yes");
            }
            else {
                writeln("No");
            }
        }
    }


}

void scan(T...)(ref T args) {
    auto line = readln.split;
    foreach (ref arg ; args) {
        arg = line.front.to!(typeof(arg));
        line.popFront();
    }
    assert(line.empty);
}