#include <iostream>
#include <initializer_list>
#include <vector>
#include <string>
#include <iterator>
#include <utility>
template<typename T>
void printme_impl(T&& t) {
for(auto it = t.begin(); it != t.end(); ++it)
std::cout << *it;
}
template<typename T>
void printme(T&& t) {
printme_impl(std::forward<T>(t));
}
template<typename T>
void printme(std::initializer_list<T> t) {
printme_impl<std::initializer_list<T>&>(t);
}
int main() {
printme(std::vector<char>({'a', 'b', 'c'}));
printme(std::string("abc"));
printme({'a', 'b', 'c'});
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8dXRpbGl0eT4KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgcHJpbnRtZV9pbXBsKFQmJiB0KSB7CiAgZm9yKGF1dG8gaXQgPSB0LmJlZ2luKCk7IGl0ICE9IHQuZW5kKCk7ICsraXQpCiAgICBzdGQ6OmNvdXQgPDwgKml0Owp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIHByaW50bWUoVCYmIHQpIHsKICBwcmludG1lX2ltcGwoc3RkOjpmb3J3YXJkPFQ+KHQpKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kdm9pZCBwcmludG1lKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiB0KSB7CiAgcHJpbnRtZV9pbXBsPHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiY+KHQpOwp9CgppbnQgbWFpbigpIHsKICBwcmludG1lKHN0ZDo6dmVjdG9yPGNoYXI+KHsnYScsICdiJywgJ2MnfSkpOwogIHByaW50bWUoc3RkOjpzdHJpbmcoImFiYyIpKTsKICBwcmludG1lKHsnYScsICdiJywgJ2MnfSk7CiAgcmV0dXJuIDA7Cn0=