unittest
{
	assert( [ "2 1 1 0 0 0 0" ].solve == 3 );
	assert( [ "0 0 10 0 0 0 0" ].solve == 0 );
	
	assert( [ "3 0 0 1 1 0 0" ].solve == 5 );		// 追加ケース
	assert( [ "4 0 0 1 1 0 0" ].solve == 5 );		// 追加ケース
	assert( [ "3 0 0 2 2 0 0" ].solve == 6 );		// 追加ケース
}



import std.conv;
import std.range;
import std.stdio;

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

auto solve( Range )( Range input )
if( isInputRange!Range && is( ElementType!Range == string ) )
{
	auto as = input.front.split.to!( long[] );
	
	auto ans = 0L;
	
	// 棒と逆LとL1個ずつで2x6を作る
	if( 1 < as[ 0 ] % 2 + as[ 3 ] % 2 + as[ 4 ] % 2 )
	{
		ans += 3;
		as[ 0 ]--;
		as[ 3 ]--;
		as[ 4 ]--;
	}
	
	// 縦棒2個で 2x4 を作る
	ans += as[ 0 ] / 2 * 2;
	
	// 四角1個で 2x2 を作る
	ans += as[ 1 ];
	
	// 逆L2個で 2x4 を作る
	ans += as[ 3 ] / 2 * 2;
	
	// L2個で 2x4 を作る
	ans += as[ 4 ] / 2 * 2;
	
	return ans;
}
