// Original C++ solution (slower):
#include <stdio.h>

#include <bits/stdc++.h>



#define MAXN 100000

/*

bool check1(int *a, int n);

bool check2(int *a, int n);



int main()

{

    int n, i, a[MAXN];

    scanf("%d", &n);

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

    {

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

    }

    if(check1(a, n) == false)

        printf("No");

    else

        printf("Yes");

}

bool check1(int * a, int n)

{

   int *p, i;

   if(check2(a, n) == false)

        return false;

    else

    {

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

        {

           *p = * (a + n);

           * (a + n) = * (a + i);

           * (a + i) = * p;

           if(check1(a, n-1) == false || a[n-2] * a[n-1] % 4 != 0)

              return false;

           *p = * (a + n);

           * (a + n) = * (a + i);

           * (a + i) = * p;

        }

    }

    return true;

}

bool check2(int * a, int n)

{

    int i;

    for(i = 1; i < n - 1; i++)

    {

        if(a[i] * a[i-1] % 4 != 0 || a[i] * a[i+1] % 4 != 0)

            return false;

    }

    if(a[0] * a[1] % 4 != 0 )

        return false;

    return true;

}

*/

int main()

{

    int n, i, a[MAXN], a4 = 0, a2 = 0, a1 = 0;

    scanf("%d", &n);

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

    {

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

       if(a[i] % 4 == 0)

        a4++;

       if(a[i] % 2 == 0 && a[i] % 4 != 0)

        a2++;

       if(a[i] % 2 != 0)

        a1++;

    }

    if(a4 >= a1)

    {

          printf("Yes\n");

    }

    else

    {

        if(a4 == a1 - 1 && a2 == 0 )

            printf("Yes\n");

        else

            printf("No\n");

    }

}




// 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: