I don't think these special casing is necessary if you treat the change_index just as a linear transform $j = u*i + v$ with u
(for the moment) limited to $\pm 1$.