add to set $\mathcal{F}(\pi, x, k)$ the constraint $\pi \geq p_c k_{w_c}$ which handles the possible adding of the critical item to the split solution if the residual capacity is equal to $w_c$.

\[algo:Tuples\]

.

Then we solve models $CRIT_2^{LP}(c)$ for each $c \in [l,r]$ and order the models by increasing optimal value so as to have an order of most promising subproblems to explore. If for the first subproblem we have $z(CRIT_2^{LP}(c)) \geq z^*$, an optimal BKP solution is already certified (Line \[endCritItems\] of the pseudo code).

### Computing feasible BKP solutions {#heursol}

According to the previous order of subproblems, we compute BKP feasible solutions by considering the first $\gamma$ subproblems (Lines \[FeasGammaSol\]-\[endFeasGammaSol\]). For a given item $c$, we solve model $CRIT_2(c)$ obtaining a solution $\hat{x}$.\
If $z(CRIT_2(c)) < z^*$, we solve the induced follower’s problem $KP(\hat{x})$ with optimal solution $\hat{y}$ and update the current best solution if $z(KP(\hat{x})) < z^*$.

Step 2 {#TheStep2}
------

This step consider all relevant (ordered) suproblems $CRIT_2(c)$. For each subproblem, we first test for standard variables fixing and then each subproblem is explored by means of a constraint generation approach (Lines \[solveSub\]-\[endsolveSub\]).

### Fixing variables in subproblems {#fixvar}

For a given problem $CRIT_2^{LP}(c)$, 