#include <utility>
#include <vector>
#include <iterator>
template <typename It>
std::vector<std::pair<It,It>> chunk(It first, It last, unsigned bucket_size)
{
std::vector<std::pair<It,It>> ret;
unsigned count=std::distance(first, last);
ret.reserve(count/bucket_size+1);
for( ; count >= bucket_size; count -= bucket_size) {
It endchunk = std::next(first, bucket_size);
ret.push_back(std::make_pair(first, endchunk));
first = endchunk;
}
if (first!= last)
ret.push_back(std::make_pair(first, last));
return ret;
}
int main() {
std::vector<int> input(100);
auto res = chunk(input.begin(), input.end(), 9);
}
I2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxpdGVyYXRvcj4KCnRlbXBsYXRlIDx0eXBlbmFtZSBJdD4Kc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPEl0LEl0Pj4gY2h1bmsoSXQgZmlyc3QsIEl0IGxhc3QsIHVuc2lnbmVkIGJ1Y2tldF9zaXplKQp7CiAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPEl0LEl0Pj4gcmV0OwogIHVuc2lnbmVkIGNvdW50PXN0ZDo6ZGlzdGFuY2UoZmlyc3QsIGxhc3QpOwogIHJldC5yZXNlcnZlKGNvdW50L2J1Y2tldF9zaXplKzEpOwogIGZvciggOyBjb3VudCA+PSBidWNrZXRfc2l6ZTsgY291bnQgLT0gYnVja2V0X3NpemUpIHsKICAgIEl0IGVuZGNodW5rID0gc3RkOjpuZXh0KGZpcnN0LCBidWNrZXRfc2l6ZSk7CiAgICByZXQucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGZpcnN0LCBlbmRjaHVuaykpOwogICAgZmlyc3QgPSBlbmRjaHVuazsKICB9CiAgaWYgKGZpcnN0IT0gbGFzdCkKICAgIHJldC5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoZmlyc3QsIGxhc3QpKTsKICByZXR1cm4gcmV0Owp9CgppbnQgbWFpbigpIHsKICBzdGQ6OnZlY3RvcjxpbnQ+IGlucHV0KDEwMCk7CiAgYXV0byByZXMgPSBjaHVuayhpbnB1dC5iZWdpbigpLCBpbnB1dC5lbmQoKSwgOSk7Cn0=