unittest
{
	assert( [ "3", "1 10 100" ].parse.expand.solve == "Yes" );
	assert( [ "4", "1 2 3 4" ].parse.expand.solve == "No" );
	assert( [ "3", "1 4 1" ].parse.expand.solve == "Yes" );
	assert( [ "2", "1 1" ].parse.expand.solve == "No" );
	assert( [ "6", "2 7 1 8 2 8" ].parse.expand.solve == "Yes" );
	
	assert( [ "6", "2 2 7 8 1 8 1" ].parse.expand.solve == "No" );		// 追加ケース
	assert( [ "6", "2 2" ].parse.expand.solve == "Yes" );		// 追加ケース
	assert( [ "6", "2 2 2" ].parse.expand.solve == "Yes" );		// 追加ケース
}



import std.algorithm;
import std.conv;
import std.range;
import std.stdio;
import std.string;
import std.typecons;

void main()
{
	stdin.byLineCopy.parse.expand.solve.writeln;
}

auto parse( Range )( Range input )
if( isInputRange!Range && is( ElementType!Range == string ) )
{
	auto n = input.front.strip.to!( long );
	input.popFront;
	auto as = input.front.split.to!( long[] );
	return tuple( as );
}

auto solve( long[] as )
{
	// 4の倍数があれば、4の倍数を4の倍数以外で挟めば条件を満たせる
	auto q = as.count!( ( a ) => a % 4 == 0 );
	auto qq = ( ( 0 < q ) ? 1 : 0 ) + q * 2;		// 4の倍数を使って条件を満たせる要素数
	if( as.length <= qq ) return "Yes";
	
	// 2の倍数があれば、2の倍数同士を並べれば条件を満たせる（ただし4の倍数の隣に置く必要がある）
	auto d = as.count!( ( a ) => ( a % 4 != 0 ) && ( a % 2 == 0 ) );
	auto dd = q * 2 + d;		// 4の倍数と2の倍数を使って条件を満たせる要素数
	if( as.length <= dd ) return "Yes";
	
	return "No";
}
