We have a sequence of length N, a = (a_1, a_2, ..., a_N). Each a_i is a positive integer.

Snuke's objective is to permute the element in a so that the following condition is satisfied:

* For each 1 ≤ i ≤ N - 1, the product of a_i and a_{i + 1} is a multiple of 4.



Determine whether Snuke can achieve his objective.

Constraints

* 2 ≤ N ≤ 10^5
* a_i is an integer.
* 1 ≤ a_i ≤ 10^9

Input

Input is given from Standard Input in the following format:


N
a_1 a_2 ... a_N


Output

If Snuke can achieve his objective, print `Yes`; otherwise, print `No`.

Examples

Input

3
1 10 100


Output

Yes


Input

4
1 2 3 4


Output

No


Input

3
1 4 1


Output

Yes


Input

2
1 1


Output

No


Input

6
2 7 1 8 2 8


Output

Yes
import java.util.Scanner;

public class Main {

	private static final String YES = "Yes";
	private static final String NO = "No";

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

	public void execute() {
		Scanner sc = new Scanner(System.in);
		final int N = sc.nextInt();
		int[] a = new int[N];
		int zeroCnt = 0;
		int oneCnt = 0;
		int twoCnt = 0;

		for (int i = 0; i < N; i++) {
			int ai = sc.nextInt();
			a[i] = ai;
			if (ai % 4 == 0) {
				twoCnt++;
			} else if (ai % 2 == 0) {
				oneCnt++;
			} else {
				zeroCnt++;
			}
		}
		boolean ok;
		if (zeroCnt > 0) {
			ok = fourAdjacent(0, zeroCnt - 1, oneCnt, twoCnt);
		} else if (oneCnt > 0) {
			ok = fourAdjacent(1, zeroCnt, oneCnt - 1, twoCnt);
		} else {
			ok = fourAdjacent(2, zeroCnt, oneCnt, twoCnt-1);
		}
		if(ok) {
			System.out.println(YES);
		}
		else {
			System.out.println(NO);
		}
		sc.close();
	}

	private boolean fourAdjacent(int last, int zero, int one, int two) {
		if (zero == 0 && one == 0 && two == 0) {
			return true;
		}
		switch (last) {
		case 0:
			if (two > 0) {
				return fourAdjacent(2, zero, one, two - 1);
			} else {
				return false;
			}
		case 1:
			if (one > 0) {
				return fourAdjacent(1, zero, one - 1, two);
			} else if (two > 0) {
				return fourAdjacent(2, zero, one, two - 1);
			} else {
				return false;
			}
		case 2:
			if (zero > 0) {
				return fourAdjacent(0, zero - 1, one, two);
			} else if (one > 0) {
				return fourAdjacent(1, zero, one - 1, two);
			} else if (two > 0) {
				return fourAdjacent(2, zero, one, two - 1);
			} else {
				throw new RuntimeException("Not Reachable");
			}
		}
		return false;
	}

}
