Some of the WL code leaves a little to be desired. Here's a more idiomatic and readable Meal:
Meal[forests_] :=
Outer[Plus, forests, Permutations[{1, -1, -1}], 1] // Catenate //
DeleteDuplicates // Select[AllTrue[NonNegative]];