functionals, itervariadic, lazy iterators don't add extra counters, transparently shuffling the result of input iterators.