enhancementhelp wanted
Description
Usually we just split iterators at len/2. For something like find_first, it may be better to split closer to the front of the iterator, like len/3. Likewise, find_last might prefer something like 2 * len / 3.
For find_last, it might also be a good idea to flip the join arguments, so the latter split is processed first.
I'm not sure if these ideas could be exposed generically, or if the find functions should just implement custom bridge functions to this effect. Part of the challenge is that these are also at the end of the iterator chain, so their immediate input might not a Producer at all.