#include <iostream>
#include <vector>
template<typename X>
inline void print(X && x) {
auto first = std::begin(x);
auto last = std::end(x);
while (first != last) {
auto next = first + 1;
while (next != last && next - first == *next - *first){
++next;
}
std::cout << *first;
if (next - first > 1) {
std::cout << "-" << *first + next - first - 1;
}
if (next != last) {
std::cout << ",";
}
first = next;
}
std::cout << std::endl;
}
inline void print(std::initializer_list<int> x) {
print<std::initializer_list<int>>(std::move(x));
}
int main(){
int a[] = { 1, 2, 3, 4, 7, 9, 10 };
print(a);
auto v = std::vector<int>{ 1, 2, 3, 4, 7, 9, 10 };
print(v);
print({ 1, 2, 3, 4, 7, 9, 10 });
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKCnRlbXBsYXRlPHR5cGVuYW1lIFg+CmlubGluZSAgdm9pZCBwcmludChYICYmIHgpIHsKCWF1dG8gZmlyc3QgPSBzdGQ6OmJlZ2luKHgpOwoJYXV0byBsYXN0ID0gc3RkOjplbmQoeCk7Cgl3aGlsZSAoZmlyc3QgIT0gbGFzdCkgewkJCgkJYXV0byBuZXh0ID0gZmlyc3QgKyAxOwkJCgkJd2hpbGUgKG5leHQgIT0gbGFzdCAmJiAgbmV4dCAtIGZpcnN0ID09ICpuZXh0IC0gKmZpcnN0KXsKCQkJKytuZXh0OwkJCQoJCX0KCQlzdGQ6OmNvdXQgPDwgKmZpcnN0OwoJCWlmIChuZXh0IC0gZmlyc3QgPiAxKSB7CgkJCXN0ZDo6Y291dCA8PCAiLSIgPDwgKmZpcnN0ICsgbmV4dCAtIGZpcnN0IC0gMTsKCQl9CQkKCQlpZiAobmV4dCAhPSBsYXN0KSB7CgkJCXN0ZDo6Y291dCA8PCAiLCI7CgkJfQoJCWZpcnN0ID0gbmV4dDsKCX0KCXN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7Cn0KCmlubGluZSAgdm9pZCBwcmludChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW50PiB4KSB7CglwcmludDxzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW50Pj4oc3RkOjptb3ZlKHgpKTsKfQoKaW50IG1haW4oKXsKICAgaW50IGFbXSA9IHsgMSwgMiwgMywgNCwgNywgOSwgMTAgfTsKICAgcHJpbnQoYSk7CiAgIGF1dG8gdiA9IHN0ZDo6dmVjdG9yPGludD57IDEsIDIsIDMsIDQsIDcsIDksIDEwIH07CiAgIHByaW50KHYpOwogICBwcmludCh7IDEsIDIsIDMsIDQsIDcsIDksIDEwIH0pOwogICByZXR1cm4gMDsJCn0g