#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-10;
const double PI = acos(-1.0);
const int MOD = 1000000007;
const int INF = 2147483647;
template <class T>
inline T isPrime(T x) {
  bool ret = true;
  if (x < 2) {
    ret = false;
  }
  for (long long i = 2; i <= sqrt(x); i++) {
    if (x % i == 0) {
      ret = false;
    }
  }
  return ret;
}
struct UnionFind {
  vector<int> par;
  UnionFind(int N) : par(N) {
    for (int i = 0; i < N; i++) par[i] = i;
  }
  int root(int x) {
    if (par[x] == x) return x;
    return par[x] = root(par[x]);
  }
  void unite(int x, int y) {
    int rx = root(x);
    int ry = root(y);
    if (rx == ry) return;
    par[rx] = ry;
  }
  bool same(int x, int y) {
    int rx = root(x);
    int ry = root(y);
    return rx == ry;
  }
};
int main(int argc, char const* argv[]) {
  int n;
  cin >> n;
  int count_odd = 0;
  int count_2 = 0;
  int count_4 = 0;
  for (int i = 0; i < n; i++) {
    int a;
    cin >> a;
    if (a % 2 == 1) {
      count_odd++;
    } else if (a % 4 == 0) {
      count_4++;
    } else {
      count_2++;
    }
  }
  if (count_odd + (count_2 + 1) / 2 <= count_4 + 1) {
    cout << "Yes" << endl;
  } else {
    cout << "No" << endl;
  }
  return 0;
}
