#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
// a stream operator for vector<int> ouput
std::ostream& operator<<(std::ostream &out, const std::vector<int> &values)
{
const char *sep = "";
for (int value : values) {
out << sep << value; sep = " ";
}
return out;
}
void readFromFile(std::istream &in)
{
if (!in.good()) {
std::cerr << "ERROR!" << std::endl;
}
std::string buffer;
std::vector<int> quality;
while (std::getline(in, buffer)) {
if (buffer.size() >= 2 && buffer.compare(0, 2, "ID") == 0) {
std::cout << buffer << std::endl;
quality.clear(); // reset quality vector
} else {
// read numbers
std::istringstream in(buffer); int qual;
while (in >> qual) {
quality.push_back(qual);
std::cout << quality << std::endl;
}
}
}
}
int main(void)
{
#if 0 // in OP
{ std::ifstream fIn("s2.txt");
readFromFile(fIn);
} // fIn goes out of scope -> file is closed
#else // instead
readFromFile(std::cin);
#endif // 0
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDx2ZWN0b3I+CgovLyBhIHN0cmVhbSBvcGVyYXRvciBmb3IgdmVjdG9yPGludD4gb3VwdXQKc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3V0LCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+ICZ2YWx1ZXMpCnsKICBjb25zdCBjaGFyICpzZXAgPSAiIjsKICBmb3IgKGludCB2YWx1ZSA6IHZhbHVlcykgewogIAlvdXQgPDwgc2VwIDw8IHZhbHVlOyBzZXAgPSAiICI7CiAgfQogIHJldHVybiBvdXQ7Cn0KCnZvaWQgcmVhZEZyb21GaWxlKHN0ZDo6aXN0cmVhbSAmaW4pCnsKICBpZiAoIWluLmdvb2QoKSkgewogICAgc3RkOjpjZXJyIDw8ICJFUlJPUiEiIDw8IHN0ZDo6ZW5kbDsKICB9CiAgc3RkOjpzdHJpbmcgYnVmZmVyOwogIHN0ZDo6dmVjdG9yPGludD4gcXVhbGl0eTsKICB3aGlsZSAoc3RkOjpnZXRsaW5lKGluLCBidWZmZXIpKSB7CiAgICBpZiAoYnVmZmVyLnNpemUoKSA+PSAyICYmIGJ1ZmZlci5jb21wYXJlKDAsIDIsICJJRCIpID09IDApIHsKICAgICAgc3RkOjpjb3V0IDw8IGJ1ZmZlciA8PCBzdGQ6OmVuZGw7CiAgICAgIHF1YWxpdHkuY2xlYXIoKTsgLy8gcmVzZXQgcXVhbGl0eSB2ZWN0b3IKICAgIH0gZWxzZSB7CiAgICAgIC8vIHJlYWQgbnVtYmVycwogICAgICBzdGQ6OmlzdHJpbmdzdHJlYW0gaW4oYnVmZmVyKTsgaW50IHF1YWw7CiAgICAgIHdoaWxlIChpbiA+PiBxdWFsKSB7CiAgICAgICAgcXVhbGl0eS5wdXNoX2JhY2socXVhbCk7CiAgICAgICAgc3RkOjpjb3V0IDw8IHF1YWxpdHkgPDwgc3RkOjplbmRsOwogICAgICB9CiAgICB9CiAgfQp9CgppbnQgbWFpbih2b2lkKQp7CiNpZiAwIC8vIGluIE9QCiAgeyBzdGQ6Omlmc3RyZWFtIGZJbigiczIudHh0Iik7CiAgICByZWFkRnJvbUZpbGUoZkluKTsKICB9IC8vIGZJbiBnb2VzIG91dCBvZiBzY29wZSAtPiBmaWxlIGlzIGNsb3NlZAojZWxzZSAvLyBpbnN0ZWFkCiAgcmVhZEZyb21GaWxlKHN0ZDo6Y2luKTsKI2VuZGlmIC8vIDAKICByZXR1cm4gMDsKfQo=