// Original C++ solution (slower):
#include<bits/stdc++.h> //Ithea Myse Valgulious

namespace chtholly{

typedef long long ll;

#define re0 register int

#define rec register char

#define rel register ll

#define gc getchar

#define pc putchar

#define p32 pc(' ')

#define pl puts("")

/*By Citrus*/

inline int read(){

  int x=0,f=1;char c=gc();

  for (;!isdigit(c);c=gc()) f^=c=='-';

  for (;isdigit(c);c=gc()) x=(x<<3)+(x<<1)+(c^'0');

  return f?x:-x;

  }

template <typename mitsuha>

inline bool read(mitsuha &x){

  x=0;int f=1;char c=gc();

  for (;!isdigit(c)&&~c;c=gc()) f^=c=='-';

  if (!~c) return 0;

  for (;isdigit(c);c=gc()) x=(x<<3)+(x<<1)+(c^'0');

  return x=f?x:-x,1;

  }

template <typename mitsuha>

inline int write(mitsuha x){

  if (!x) return 0&pc(48);

  if (x<0) x=-x,pc('-');

  int bit[20],i,p=0;

  for (;x;x/=10) bit[++p]=x%10;

  for (i=p;i;--i) pc(bit[i]+48);

  return 0;

  }

inline char fuhao(){

  char c=gc();

  for (;isspace(c);c=gc());

  return c;

  }

}using namespace chtholly;

using namespace std;

const int yuzu=1e5;

int cnt,cnt1,cnt2;

int main(){

int n=read();

for (int i=1;i<=n;++i){

  int x=read();

  if (!(x&1)){

    if (!(x>>1&1)){

      ++cnt1;

      }else{

      ++cnt2;

      }

    }

  }

if (cnt2/2+cnt1>=n/2) puts("Yes");

else puts("No");

}

// Optimized solution to the same problem (faster):
/*#include<cstdio>      最后一个测试点过不了，不知道为什么

const int maxn = 100010;

int luck[maxn] = {0};

int main(){

    int n;

    int countluck = 0;

    int countunluck = 0;

    int counttwo = 0;

    scanf("%d",&n);

    for(int i = 0;i < n;i++){

        scanf("%d",&luck[i]);

        if(luck[i] % 4 == 0){

            countluck++;

        }else if(luck[i] % 2 == 0){

            counttwo++;

        }else{

            countunluck++;

        }

    }

    if(counttwo == 0){

        if(countunluck - 1 > countluck){

            printf("No\n");

        }else{

            printf("Yes\n");



        }

    }

    else if (counttwo > 0){

        if(counttwo == 1){

            countunluck++;

        }else{

            countluck +=(counttwo/2);

        }



        if(countunluck-1  > countluck){

            printf("No\n");



        }else{

            printf("Yes\n");



        }

    }





    return 0;

}

*/



#include<cstdio>      

const int maxn = 100010;

int luck[maxn] = {0};

int main(){

    int n;

    int countluck = 0;

    int countunluck = 0;

    int counttwo = 0;

    scanf("%d",&n);

    for(int i = 0;i < n;i++){

        scanf("%d",&luck[i]);

        if(luck[i] % 4 == 0){

            countluck++;

        }else if(luck[i] % 2 == 0){

            counttwo++;

        }else{

            countunluck++;

        }

    }

    if(counttwo == 0){

        if(countunluck - 1 > countluck){

            printf("No\n");

        }else{

            printf("Yes\n");



        }

    }

    else if (counttwo > 0){           //将2放在末尾，所以说需要unlucky的数量小于luck的数量

            

        /*if(counttwo == 1){

            countunluck++;

        }else{

            countluck +=(counttwo/2);

        }*/



        if(countunluck > countluck){

            printf("No\n");



        }else{

            printf("Yes\n");



        }

    }





    return 0;

}




















































// Fastest known solution for this problem: