import std.algorithm;
import std.array;
import std.conv;
import std.stdio;
import std.string;

bool solve (int n, int [] a)
{
	auto lo = a.reduce !(min);
	auto hi = a.reduce !(max);
	if (hi - lo > 1)
	{
		return false;
	}
	if (hi == lo)
	{
		return lo == n - 1 || lo * 2 <= n;
	}
	auto numLo = a.count (lo);
	auto numHi = a.count (hi);
	auto minHiColors = 1;
	auto maxHiColors = numHi / 2;
	return numLo + minHiColors <= hi && hi <= numLo + maxHiColors;
}

void main ()
{
	int n;
	while (readf (" %s", &n) > 0)
	{
		readln;
		auto a = readln.split.map !(to !(int)).array;
		writeln (solve (n, a) ? "Yes" : "No");
	}
}
