There are N cats. We number them from 1 through N.

Each of the cats wears a hat. Cat i says: "there are exactly a_i different colors among the N - 1 hats worn by the cats except me."

Determine whether there exists a sequence of colors of the hats that is consistent with the remarks of the cats.

Constraints

* 2 ≤ N ≤ 10^5
* 1 ≤ a_i ≤ N-1

Input

Input is given from Standard Input in the following format:


N
a_1 a_2 ... a_N


Output

Print `Yes` if there exists a sequence of colors of the hats that is consistent with the remarks of the cats; print `No` otherwise.

Examples

Input

3
1 2 2


Output

Yes


Input

3
1 1 2


Output

No


Input

5
4 3 4 3 4


Output

No


Input

3
2 2 2


Output

Yes


Input

4
2 2 2 2


Output

Yes


Input

5
3 3 3 3 3


Output

No
import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Main main = new Main();
		main.solveB();
	}

	private void solveB() {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int minK = N;
		int minKnum = 0;
		int maxK = 0;
		int maxKnum = 0;
		for (int i = 0; i < N; i++) {
			int num = sc.nextInt();
			if (minK > num) {
				minK = num;
				minKnum = 0;
			}
			if (maxK < num) {
				maxK = num;
				maxKnum = 0;
			}
			if (minK == num) {
				minKnum++;
			}
			if (maxK == num) {
				maxKnum++;
			}
		}
		if (judge(minK, minKnum, maxK, maxKnum)) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}

	private boolean judge(int minK, int minKnum, int maxK, int maxKnum) {
		if (minK + 1 < maxK) {
			return false;
		}
		if (minK == maxK) {
			if (minK + 1 == minKnum) {
				return true;
			}
			return minK <= minKnum / 2;
		}
		if (maxKnum < 2) {
			return false;
		}
		return (minKnum < maxK) && (maxK <= minKnum + maxKnum / 2);
	}
}