#include<iostream>
#include<vector>
#include<cstdlib>
#include<algorithm>
using namespace std;
template<class T, class Pred>
vector<vector<T>> divide(const vector<T>& v, Pred pred)
{
vector<vector<T>> ret;
auto i = v.begin();
for(;;) {
auto j = adjacent_find(i, v.end(), pred);
if (j == v.end())
break;
ret.emplace_back(i, j + 1);
i = j + 1;
}
ret.emplace_back(i, v.end());
return ret;
}
int main(void){
vector<int> value = {1,4,7,8,11};
auto ret = divide(value, [](int a, int b){return abs(b-a)>=2;});
for( auto& a : ret ) {
for( auto& b : a )
cout << b << " ";
cout << endl;
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8Y3N0ZGxpYj4KI2luY2x1ZGU8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgUHJlZD4KdmVjdG9yPHZlY3RvcjxUPj4gZGl2aWRlKGNvbnN0IHZlY3RvcjxUPiYgdiwgUHJlZCBwcmVkKQp7Cgl2ZWN0b3I8dmVjdG9yPFQ+PiByZXQ7CglhdXRvIGkgPSB2LmJlZ2luKCk7Cglmb3IoOzspIHsKCQlhdXRvIGogPSBhZGphY2VudF9maW5kKGksIHYuZW5kKCksIHByZWQpOwoJCWlmIChqID09IHYuZW5kKCkpCgkJCWJyZWFrOwoJCXJldC5lbXBsYWNlX2JhY2soaSwgaiArIDEpOwoJCWkgPSBqICsgMTsKCX0KCXJldC5lbXBsYWNlX2JhY2soaSwgdi5lbmQoKSk7CglyZXR1cm4gcmV0Owp9CmludCBtYWluKHZvaWQpewoJdmVjdG9yPGludD4gdmFsdWUgPSB7MSw0LDcsOCwxMX07CgkKCWF1dG8gcmV0ID0gZGl2aWRlKHZhbHVlLCBbXShpbnQgYSwgaW50IGIpe3JldHVybiBhYnMoYi1hKT49Mjt9KTsKCQoJZm9yKCBhdXRvJiBhIDogcmV0ICkgewoJCWZvciggYXV0byYgYiA6IGEgKQoJCQljb3V0IDw8IGIgPDwgIiAiOwoJCWNvdXQgPDwgZW5kbDsKCX0KCQoJcmV0dXJuIDA7Cn0K