{ \
int m0,m1;\
\
\
m0 = state[i].metric + euclid[sym]; \
m1 = state[i+32].metric + euclid[3^sym]; \
if(m0 > m1){\
next[2*i].metric = m0;\
next[2*i].path = state[i].path << 1;\
} else {\
next[2*i].metric = m1;\
next[2*i].path = (state[i+32].path << 1)|1;\
}\
\
m0 = state[i].metric + euclid[3^sym]; \
m1 = state[i+32].metric + euclid[sym]; \
if(m0 > m1){\
next[2*i+1].metric = m0;\
next[2*i+1].path = state[i].path << 1;\
} else {\
next[2*i+1].metric = m1;\
next[2*i+1].path = (state[i+32].path << 1)|1;\
}\
}