#include <iostream>
#include <cstdio>
#include <algorithm>
#define DEBUG 0
using namespace std;

int main()
{
    #if DEBUG
    freopen("test.txt", "r", stdin);
    #endif // DEBUG
    //打表4的倍数
    int N;
    scanf("%d",&N);

    int num4=0;
    int num2=0;
    int num1=0;
    for(int i=0; i<N; i++)
    {
        int temp;
        scanf("%d", &temp);
        if(temp%4 == 0){
            num4++;
        }else if(temp%2 ==0){
            num2++;
        }else{
            num1++;
        }
        #if DEBUG
        printf("%d--",temp);
        #endif // DEBUG
    }
    //计算结果
    if(num2 == 0 && num4<=num1+1)
        printf("Yes\n");
    else if(num2 > 0 && num4 >= num1 )
        printf("Yes\n");
    else
        printf("No\n");

    return 0;
}

/*
struct program
{
    int startTime;
    int endTime;
    bool operator < (const program &A) const{
        return endTime < A.endTime;
    }
}buf[1000];

int main()
{
    #if DEBUG
    freopen("test.txt", "r", stdin);
    #endif // DEBUG
    int N;
    while(scanf("%d", &N)!=EOF)
    {
        if(N==0)
            break;
        for(int i=0; i<N; i++)
        {
            scanf("%d%d",&buf[i].startTime,&buf[i].endTime);
        }
        sort(buf,buf+N);
        int currentTime =0;
        int ans = 0;

        for(int i=0;i<N;i++)
        {
            if(currentTime <=buf[i].startTime)
            {
                currentTime = buf[i].endTime;
                ans++;
            }
        }
        printf("%d\n", ans);
    }

    return 0;
}


int main()
{
    #if DEBUG
    freopen("test.txt", "r", stdin);
    #endif // DEBUG
    int N1,N2;
    scanf("%d %d",&N1,&N2);
    char vec1[100];
    char vec2[100];
    int k1=0;
    int k2=0;
    while(N1!=0)
    {
        char temp1 = N1%10+'0';
        vec1[k1++] = temp1;
        N1/=10;
    }
    while(N2!=0)
    {
        char temp2 = N2%10+'0';
        vec2[k2++] = temp2;
        N2/=10;
    }
    int i=0;
    int j=0;
    while(i<k1&&j<k2)
    {
        if(vec1[i]==vec2[j])
        {
            i++;j++;
        }
        else if(vec1[i] > vec2[j])
        {
            i++;
            vec2[j++] = -1;
        }
        else
        {
            vec1[i++] = -1;
            j++;
        }
    }
    int ans1=0;
    int ans2=0;
    int count1=0;
    int count2=0;
    //将两个char数组还原成数字
    for(int i=k1-1;i>=0;i--)
    {
        if(vec1[i]>=0)
        {
            ans1 *=10;
            ans1 +=vec1[i]-'0';
        }
        else
            count1++;
    }

    for(int i=k2-1;i>=0;i--)
    {
        if(vec2[i]>=0)
        {
            ans2 *=10;
            ans2 +=vec2[i]-'0';
        }
        else
            count2++;
    }
    if(count1 == k1)
    {
        printf("YODA\n");
        printf("%d\n",ans2);
    }
    else if(count2 == k2)
    {
        printf("%d\n",ans1);
        printf("YODA\n");
    }
    else
    {
        printf("%d\n",ans1);
        printf("%d\n",ans2);
    }

    return 0;
}
*/
