int main() {
  int nums[] = {5, 3, 10, 1, 2};
  print_range(nums, nums + 5);
  insertion_sort_n(nums, 5, std::less<int>());
  print_range(nums, nums + 5);
  return 0;
}
void benchmark_n(int i)
{
    std::mt19937 gen;
    auto a = data(i);
    timer::duration_t ms = {};
    for(int j = 0; j < cloops; ++j)
    {
        ::shuffle(a.get(), i, gen);
        timer t;
        insertion_sort_n(I{a.get()}, i);
        ms += t.elapsed();
    }
    std::cout << to_millis(ms/cloops) << std::endl;
}