#include <bits/stdc++.h>
int descending_compare(const void *a, const void *b) {
  if (*(int *)a > *(int *)b) {
    return -1;
  } else if (*(int *)a == *(int *)b) {
    return 0;
  } else {
    return 1;
  }
}
int ascending_compare(const void *a, const void *b) {
  if (*(int *)a < *(int *)b) {
    return -1;
  } else if (*(int *)a == *(int *)b) {
    return 0;
  } else {
    return 1;
  }
}
int lower_bound(int *a, int n, int key) {
  int left, mid, right;
  left = 0, right = n;
  mid = (left + right) / 2;
  while ((left + 1 != mid || mid + 1 != right) && mid != left) {
    if (key > a[mid]) {
      left = mid;
    } else {
      right = mid + 1;
    }
    mid = (left + right) / 2;
  }
  if (a[left] >= key) return left;
  if (a[mid] >= key) return mid;
  if (a[right] >= key) return right;
  return n;
}
unsigned long gcd(unsigned long x, unsigned long y) {
  if (y == 0) {
    return x;
  } else {
    return gcd(y, x % y);
  }
}
int main(void) {
  int n;
  int i;
  int cnt = 0;
  int tmpcnt = 0;
  int a;
  int ans = 0;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &a);
    if (a % 4 == 0) {
      cnt++;
    }
    if (a % 4 != 0 && a % 2 == 0) {
      tmpcnt++;
    }
  }
  if (cnt == 1 && cnt * 2 + 1 == n) {
    printf("Yes\n");
    return 0;
  }
  ans += cnt * 2;
  if (tmpcnt > 1) {
    ans += tmpcnt;
  }
  if (cnt >= n) {
    printf("Yes\n");
  } else {
    printf("No\n");
  }
  return 0;
}
