I have a list $L$ of `Length` $n\geq6$ and a function $f$ that, when applied to $L$, generates $n-5$ lists $\mathscr{L}_i$ of Length $n-1$ (at the outermost level). I want to then apply $f$ to each $\mathscr{L}_i$, then repeat with the generated lists and keep doing that until I get $(n-5)!$ lists of length 5 (which I suppose is right).

I only wanna do this for small $n$, so performance is not a problem, I just can't figure out the way to do it: I've been trying `Nest`, `NestWhile` and the List versions together with `Table` to access the generated list elements but to no success.

To show you exactly what I'm doing, for $n=8$, I have e.g.

    f[Range[8]]
    Flatten[Table[f[%[[p]]], {p, Length[%]}], 1]
    Flatten[Table[f[%[[p]]], {p, Length[%]}], 1]

for which the output is

    {{1, 2, {3, 4}, 5, 6, 7, 8},
     {1, 2, 3, {4, 5}, 6, 7, 8},
     {1, 2, 3, 4, {5, 6}, 7, 8}}

    {{1, 2, {{3, 4}, 5}, 6, 7, 8},
     {1, 2, {3, 4}, {5, 6}, 7, 8},
     {1, 2, {3, {4, 5}}, 6, 7, 8},
     {1, 2, 3, {{4, 5}, 6}, 7, 8},
     {1, 2, {3, 4}, {5, 6}, 7, 8},
     {1, 2, 3, {4, {5, 6}}, 7, 8}}

    {{1, 2, {{{3, 4}, 5}, 6}, 7, 8},
     {1, 2, {{3, 4}, {5, 6}}, 7, 8},
     {1, 2, {{3, {4, 5}}, 6}, 7, 8},
     {1, 2, {3, {{4, 5}, 6}}, 7, 8},
     {1, 2, {{3, 4}, {5, 6}}, 7, 8},
     {1, 2, {3, {4, {5, 6}}}, 7, 8}}

(<s>it doesn't really matter what `f` does</s>*) however, when I try to do this with a one-liner I don't get what I expect,

    NestWhileList[
     Flatten[Table[f[# &[[p]]], {p, Length[# &]}], 1], 
     f[Range[8]], Length[#] & < 3!]

just gives

    {{{1, 2, {3, 4}, 5, 6, 7, 8},
      {1, 2, 3, {4, 5}, 6, 7, 8},
      {1, 2, 3, 4, {5, 6}, 7, 8}}}


*****
*
I didn't think the particular definition of `f` would matter, but since it is mentioned in the comments, this is it:

    f[L_] := Table[
       Delete[ReplacePart[L, p+1 -> {L[[p+1]], L[[p+2]]}], p+2]
       , {p, 2, Length[L]-4}] /; Length[L] >= 6