import std.stdio;
import std.conv, std.array, std.algorithm, std.string;
import std.math, std.random, std.range, std.datetime;
import std.bigint;

void main(){
	ulong ai, ao, at, aj, al, as, az;
	{
		ulong[] tmp = readln.chomp.split.map!(to!ulong).array;
		ai = tmp[0], ao = tmp[1], at = tmp[2], aj = tmp[3],
		al = tmp[4], as = tmp[5], az = tmp[6];
		}
	
	ulong ans;
	
	ans += ao;
	
	if(min(ai, aj, al) == 0){
		ans += 2 * (ai / 2) + 2 * (aj / 2) + 2 * (al / 2);
		}
	else{
		if(ai % 2 == aj % 2 && aj % 2 == al % 2){
			ans += ai + aj + al;
			}
		else{
			ans += ai + aj + al - 1;
			}
		}
	
	ans.writeln;
	}

/*
T, S, Z は捨てる
O はそのまま使うしかない
J, L, I は自分を2個セットで使うか、または3個で使う

使い方は2つ。
・3個でとれるところまでとり、残りを2個セットで使う
・上記より1つ少なくとり、残りを2個セットで使う

min(ai, aj, al) == 0 のとき
各自でがんばるしかない
ans = 2 * (ai / 2) + 2 * (aj / 2) + 2 * (al / 2)

その他のとき
高々1個残しにできる

if(ai % 2 == aj % 2 && aj % 2 == al % 2)
		ans = ai + aj + al
else
		ans = ai + aj + al - 1


*/