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
#include <bits/stdc++.h>
using namespace std;
struct Edge {
  int from, to, cost;
  bool operator<(Edge e) { return cost < e.cost; }
};
template <class T>
using vec = vector<T>;
template <class T>
using pql = priority_queue<T, vector<T>, greater<T>>;
string debug_show(pair<int, int> a) {
  return "(" + to_string(a.first) + "," + to_string(a.second) + ")";
}
template <class T>
struct augEdge {
  T from, to;
  int cost;
  bool operator<(augEdge e) { return cost < e.cost; }
  bool operator>(augEdge e) { return cost > e.cost; }
};
template <class T>
using augGraph = vector<augEdge<T>>;
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int n;
  cin >> n;
  int t;
  int ans = n;
  int cnt = 2;
  int a1, a2, a4;
  a1 = a2 = a4 = 0;
  bool f = false;
  for (int i = (int)(0); i < (int)(n); i++) {
    cin >> t;
    if (t % 4 == 0) {
      if (cnt > 0) {
        ans -= 3;
        cnt--;
      } else {
        ans -= 2;
      }
      a4++;
    } else if (t % 2 == 0) {
      if (f == true) {
        f = false;
        ans -= 2;
      } else {
        f = true;
      }
      a2++;
    } else {
      a1++;
    }
  }
  if (ans <= 0 && (a4 - a1 + cnt >= 0)) {
    cout << "Yes" << endl;
  } else {
    cout << "No" << endl;
  }
  return 0;
}
