cost_effective
|| cost_effective(sp, i + shift, i, shift < 0)) {
|| cost_effective(sp, i + shift, i, shift > 0)) {