#include <iostream>
#include <iterator>
#include <vector>
struct Line
{
operator const std::string&() const {return string;}
std::string string;
};
std::istream& operator>>(std::istream& in, Line& line)
{
return std::getline(in, line.string);
}
int main() {
std::istream_iterator<Line> begin(std::cin), end;
std::vector<std::string> allLines(begin, end);
std::cout << allLines.size() << " lines read from file:" << std::endl;
std::copy(allLines.begin(), allLines.end(),
std::ostream_iterator<std::string>(std::cout, "|"));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDx2ZWN0b3I+CgpzdHJ1Y3QgTGluZSAKewogICAgb3BlcmF0b3IgY29uc3Qgc3RkOjpzdHJpbmcmKCkgY29uc3Qge3JldHVybiBzdHJpbmc7fQogICAgc3RkOjpzdHJpbmcgc3RyaW5nOwp9OwoKc3RkOjppc3RyZWFtJiBvcGVyYXRvcj4+KHN0ZDo6aXN0cmVhbSYgaW4sIExpbmUmIGxpbmUpCnsKICAgIHJldHVybiBzdGQ6OmdldGxpbmUoaW4sIGxpbmUuc3RyaW5nKTsKfQoKaW50IG1haW4oKSB7CiAgICBzdGQ6OmlzdHJlYW1faXRlcmF0b3I8TGluZT4gYmVnaW4oc3RkOjpjaW4pLCBlbmQ7CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gYWxsTGluZXMoYmVnaW4sIGVuZCk7CiAgICAKICAgIHN0ZDo6Y291dCA8PCBhbGxMaW5lcy5zaXplKCkgPDwgIiBsaW5lcyByZWFkIGZyb20gZmlsZToiIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y29weShhbGxMaW5lcy5iZWdpbigpLCBhbGxMaW5lcy5lbmQoKSwKICAgICAgICAgIHN0ZDo6b3N0cmVhbV9pdGVyYXRvcjxzdGQ6OnN0cmluZz4oc3RkOjpjb3V0LCAifCIpKTsKICAgIHJldHVybiAwOwp9