You are given an array a_1, a_2, …, a_n.

In one operation you can choose two elements a_i and a_j (i ≠ j) and decrease each of them by one.

You need to check whether it is possible to make all the elements equal to zero or not.

Input

The first line contains a single integer n (2 ≤ n ≤ 10^5) — the size of the array.

The second line contains n integers a_1, a_2, …, a_n (1 ≤ a_i ≤ 10^9) — the elements of the array.

Output

Print "YES" if it is possible to make all elements zero, otherwise print "NO".

Examples

Input


4
1 1 2 2


Output


YES

Input


6
1 2 3 4 5 6


Output


NO

Note

In the first example, you can make all elements equal to zero in 3 operations: 

  * Decrease a_1 and a_2, 
  * Decrease a_3 and a_4, 
  * Decrease a_3 and a_4 



In the second example, one can show that it is impossible to make all elements equal to zero.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FastReader s = new FastReader();
		int n = s.nextInt();
		int[] input = new int[n];
		long sum = 0;
		
		for(int i = 0;i < n;i++) {
			input[i] = s.nextInt();
			sum += input[i];
		}
		Arrays.sort(input);
		if(sum % 2 == 0) {
			if(sum - input[n - 1] >= input[n - 1]) System.out.println("YES");
			else System.out.println("NO");
		}
		else System.out.println("NO");
	}

	public static int already(char[] ch) {
		int n = ch.length;
		char[] temp = "abacaba".toCharArray();
		int count = 0;
		for(int i = 0;i <= n - 7;i++) {
			int j = i;
			for(j = i;j < i + 7;j++) {
				if(temp[j - i] != ch[j]) break;
			}
			if(j == (i + 7)) {
				count++;
			}
		}
		return count;
	}
	public static boolean check(char[] ch , int i) {
		int n = ch.length;
		char[] temp = "abacaba".toCharArray();
		for(int j = i;j < i + 7;j++) {
			if(j == n) return false;
			if(temp[j - i] == ch[j] || ch[j] == '?') continue;
			else return false;
		}
		int j = i + 7;
		if(j + 3 >= n) return true;
		if(ch[j] != 'c' || ch[j + 1] != 'a' || ch[j + 2] != 'b' || ch[j + 3] != 'a') {
			if(j + 5 >= n) return true;
			if(ch[j] != 'b' || ch[j + 1] != 'a' || ch[j + 2] != 'c' || ch[j + 3] != 'a' || ch[j + 4] != 'b' || ch[j + 5] != 'a') return true;
			else return false;
		}
		return false;

	}

	public static long fun(int n , int k) {
		int mod = (int)1e9 + 7;
		long ans = 1;
		for(int i = 1;i <= k;i++) {
			ans = (ans * n)%mod;
		}
		return ans;
	}
	public static void AlternateST() {
		FastReader s = new FastReader();
		int tc = s.nextInt();
		for(int t = 0;t < tc;t++) {
			int n = s.nextInt();
			int x = s.nextInt();
			int y = s.nextInt();
			int[] ans = new int[n];
			int min = Integer.MAX_VALUE;
			for(int start = 1;start <= 50;start++) {
				for(int diff = 1;diff <= 50;diff++) {
					boolean hasx = false;
					boolean hasy = false;
					int[] arr = fun(n , start , diff);
					for(int a : arr) {
						if(a == x) hasx = true;
						if(a == y) hasy = true;
					}
					if(hasx && hasy && arr[n - 1] < min) {
						min = arr[n - 1];
						ans = arr;
					}
				}
			}
			for(int i : ans) {
				System.out.print(i + " ");
			}
			System.out.println();

		}
	}
	public static int[] fun(int n , int start , int diff) {
		int[] ans = new int[n];
		ans[0] = start;
		for(int i = 1 ;i < n;i++) {
			ans[i] = ans[i - 1] + diff;
		}
		return ans;
	}
}
class FastReader 
{ 
	BufferedReader br; 
	StringTokenizer st; 

	public FastReader() 
	{ 
		br = new BufferedReader(new
				InputStreamReader(System.in)); 
	} 

	String next() 
	{ 
		while (st == null || !st.hasMoreElements()) 
		{ 
			try
			{ 
				st = new StringTokenizer(br.readLine()); 
			} 
			catch (IOException  e) 
			{ 
				e.printStackTrace(); 
			} 
		} 
		return st.nextToken(); 
	} 

	int nextInt() 
	{ 
		return Integer.parseInt(next()); 
	} 

	long nextLong() 
	{ 
		return Long.parseLong(next()); 
	} 

	double nextDouble() 
	{ 
		return Double.parseDouble(next()); 
	} 

	String nextLine() 
	{ 
		String str = ""; 
		try
		{ 
			str = br.readLine(); 
		} 
		catch (IOException e) 
		{ 
			e.printStackTrace(); 
		} 
		return str; 
	}
}
