#include <vector>
#include <iostream>
#include <fstream>
struct Point
{
float x, y, z;
};
std::istream& operator>>(std::istream& in, Point& obj)
{return in >> obj.x >> obj.y >> obj.z;}
std::ostream& operator<<(std::ostream& in, const Point& obj)
{return in << obj.x << ' ' << obj.y << ' ' << obj.z;}
typedef std::vector<std::vector<Point> > NFPAGE;
std::istream& operator>>(std::istream& filestream , NFPAGE& NFPoints) {
long numpoints = 0;
while(filestream) {
filestream >> numpoints;
if (!filestream)
break;
std::vector<Point> pnts(numpoints);
for(int i=0; filestream && i<numpoints; ++i)
filestream >> pnts[i];
if (filestream)
NFPoints.emplace_back(std::move(pnts));
}
return filestream;
}
std::ostream& operator<<(std::ostream& filestream, const NFPAGE& NFPoints) {
filestream << NFPoints.size() << '\n';
for(unsigned i=0; i<NFPoints.size(); ++i) {
filestream << NFPoints[i].size() << '\n';
for(unsigned j=0; j<NFPoints[i].size(); ++j)
filestream << NFPoints[i][j] << '\n';
}
return filestream;
}
int main()
{
NFPAGE NFPoints;
//std::ifstream filestream("Some file");
//filestream >> NFPoints;
std::cin >> NFPoints;
std::cout << NFPoints;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KCnN0cnVjdCBQb2ludAp7CiAgZmxvYXQgeCwgeSwgejsKfTsKc3RkOjppc3RyZWFtJiBvcGVyYXRvcj4+KHN0ZDo6aXN0cmVhbSYgaW4sIFBvaW50JiBvYmopCntyZXR1cm4gaW4gPj4gb2JqLnggPj4gb2JqLnkgPj4gb2JqLno7fQpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBpbiwgY29uc3QgUG9pbnQmIG9iaikKe3JldHVybiBpbiA8PCBvYmoueCA8PCAnICcgPDwgb2JqLnkgPDwgJyAnIDw8IG9iai56O30KCnR5cGVkZWYgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8UG9pbnQ+ID4gTkZQQUdFOwoKc3RkOjppc3RyZWFtJiBvcGVyYXRvcj4+KHN0ZDo6aXN0cmVhbSYgZmlsZXN0cmVhbSAsIE5GUEFHRSYgTkZQb2ludHMpIHsKICBsb25nIG51bXBvaW50cyA9IDA7CiAgd2hpbGUoZmlsZXN0cmVhbSkgewogICAgZmlsZXN0cmVhbSA+PiBudW1wb2ludHM7CiAgICBpZiAoIWZpbGVzdHJlYW0pCiAgICAgIGJyZWFrOwogICAgc3RkOjp2ZWN0b3I8UG9pbnQ+IHBudHMobnVtcG9pbnRzKTsKICAgIGZvcihpbnQgaT0wOyBmaWxlc3RyZWFtICYmIGk8bnVtcG9pbnRzOyArK2kpCiAgICAgIGZpbGVzdHJlYW0gPj4gcG50c1tpXTsKICAgIGlmIChmaWxlc3RyZWFtKQogICAgICBORlBvaW50cy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKHBudHMpKTsKICB9CiAgcmV0dXJuIGZpbGVzdHJlYW07Cn0KCnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIGZpbGVzdHJlYW0sIGNvbnN0IE5GUEFHRSYgTkZQb2ludHMpIHsKICBmaWxlc3RyZWFtIDw8IE5GUG9pbnRzLnNpemUoKSA8PCAnXG4nOwogIGZvcih1bnNpZ25lZCBpPTA7IGk8TkZQb2ludHMuc2l6ZSgpOyArK2kpIHsKICAgIGZpbGVzdHJlYW0gPDwgTkZQb2ludHNbaV0uc2l6ZSgpIDw8ICdcbic7CiAgICBmb3IodW5zaWduZWQgaj0wOyBqPE5GUG9pbnRzW2ldLnNpemUoKTsgKytqKQogICAgICBmaWxlc3RyZWFtIDw8IE5GUG9pbnRzW2ldW2pdIDw8ICdcbic7CiAgfQogIHJldHVybiBmaWxlc3RyZWFtOwp9CgppbnQgbWFpbigpCnsKICBORlBBR0UgTkZQb2ludHM7CiAgLy9zdGQ6Omlmc3RyZWFtIGZpbGVzdHJlYW0oIlNvbWUgZmlsZSIpOwogIC8vZmlsZXN0cmVhbSA+PiBORlBvaW50czsKICBzdGQ6OmNpbiA+PiBORlBvaW50czsKICBzdGQ6OmNvdXQgPDwgTkZQb2ludHM7Cn0=
MyAKLTAuMTYgLTAuMDI1IDAuMTggCi0wLjE1NzUgLTAuMDI1IDAuMTggCi0wLjE1NSAtMC4wMjUgMC4xOCAKMyAKLTAuMTUyNSAtMC4wMjUgMC4xOCAKLTAuMTUgLTAuMDI1IDAuMTggCi0wLjE0NzUgLTAuMDI1IDAuMTg=
3
-0.16 -0.025 0.18
-0.1575 -0.025 0.18
-0.155 -0.025 0.18
3
-0.1525 -0.025 0.18
-0.15 -0.025 0.18
-0.1475 -0.025 0.18