use Range instead of InputIterator
use Range instead of InputIterator