#include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
using namespace std;
int main() {
const int a[] = {1, 2, 2, 1, 3, 3, 3, 2, 1, 1};
{
auto i = cbegin(a);
for (auto j = adjacent_find(cbegin(a), cend(a)); j != cend(a); i = j, j = adjacent_find(i, cend(a))) {
copy(i, ++j, ostream_iterator<decltype(*cbegin(a))>(cout, " "));
cout << endl;
}
copy(i, cend(a), ostream_iterator<decltype(*cbegin(a))>(cout, " "));
cout << endl;
}
cout << endl;
{
auto i = cbegin(a);
for (auto j = adjacent_find(cbegin(a), cend(a), not_equal_to<decltype(*cbegin(a))>()); j != cend(a); i = j, j = adjacent_find(i, cend(a), not_equal_to<decltype(*cbegin(a))>())) {
copy(i, ++j, ostream_iterator<decltype(*cbegin(a))>(cout, " "));
cout << endl;
}
copy(i, cend(a), ostream_iterator<decltype(*cbegin(a))>(cout, " "));
cout << endl;
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGl0ZXJhdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJY29uc3QgaW50IGFbXSA9IHsxLCAyLCAyLCAxLCAzLCAzLCAzLCAyLCAxLCAxfTsKCQoJewoJCWF1dG8gaSA9IGNiZWdpbihhKTsKCQoJCWZvciAoYXV0byBqID0gYWRqYWNlbnRfZmluZChjYmVnaW4oYSksIGNlbmQoYSkpOyBqICE9IGNlbmQoYSk7IGkgPSBqLCBqID0gYWRqYWNlbnRfZmluZChpLCBjZW5kKGEpKSkgewoJCQljb3B5KGksICsraiwgb3N0cmVhbV9pdGVyYXRvcjxkZWNsdHlwZSgqY2JlZ2luKGEpKT4oY291dCwgIiAiKSk7CgkJCWNvdXQgPDwgZW5kbDsKCQl9CgkJY29weShpLCBjZW5kKGEpLCBvc3RyZWFtX2l0ZXJhdG9yPGRlY2x0eXBlKCpjYmVnaW4oYSkpPihjb3V0LCAiICIpKTsKCQljb3V0IDw8IGVuZGw7Cgl9CgkKCQljb3V0IDw8IGVuZGw7CgkJCgl7CgkJYXV0byBpID0gY2JlZ2luKGEpOwoJCgkJZm9yIChhdXRvIGogPSBhZGphY2VudF9maW5kKGNiZWdpbihhKSwgY2VuZChhKSwgbm90X2VxdWFsX3RvPGRlY2x0eXBlKCpjYmVnaW4oYSkpPigpKTsgaiAhPSBjZW5kKGEpOyBpID0gaiwgaiA9IGFkamFjZW50X2ZpbmQoaSwgY2VuZChhKSwgbm90X2VxdWFsX3RvPGRlY2x0eXBlKCpjYmVnaW4oYSkpPigpKSkgewoJCQljb3B5KGksICsraiwgb3N0cmVhbV9pdGVyYXRvcjxkZWNsdHlwZSgqY2JlZ2luKGEpKT4oY291dCwgIiAiKSk7CgkJCWNvdXQgPDwgZW5kbDsKCQl9CgkJY29weShpLCBjZW5kKGEpLCBvc3RyZWFtX2l0ZXJhdG9yPGRlY2x0eXBlKCpjYmVnaW4oYSkpPihjb3V0LCAiICIpKTsKCQljb3V0IDw8IGVuZGw7Cgl9Cn0=