class PositionBlock;
class PositionBlockIterator;
class PositionBlockIterator{
private:
PositionBlock *posBlock;
public:
PositionBlockIterator(PositionBlock *posBlock_);
};
class PositionBlock {
public:
PositionBlockIterator * createIterator();
};
PositionBlockIterator::PositionBlockIterator(PositionBlock *posBlock_) {
posBlock = posBlock_;
}
PositionBlockIterator * PositionBlock::createIterator(){
return new PositionBlockIterator(this);
}
int main() {}
Y2xhc3MgUG9zaXRpb25CbG9jazsKY2xhc3MgUG9zaXRpb25CbG9ja0l0ZXJhdG9yOwoKY2xhc3MgUG9zaXRpb25CbG9ja0l0ZXJhdG9yewogICAgcHJpdmF0ZToKICAgICAgICBQb3NpdGlvbkJsb2NrICpwb3NCbG9jazsKCiAgICBwdWJsaWM6CiAgICAgICAgUG9zaXRpb25CbG9ja0l0ZXJhdG9yKFBvc2l0aW9uQmxvY2sgKnBvc0Jsb2NrXyk7Cn07CgpjbGFzcyBQb3NpdGlvbkJsb2NrIHsKICAgIHB1YmxpYzoKICAgICAgICBQb3NpdGlvbkJsb2NrSXRlcmF0b3IgKiBjcmVhdGVJdGVyYXRvcigpOwp9OwoKUG9zaXRpb25CbG9ja0l0ZXJhdG9yOjpQb3NpdGlvbkJsb2NrSXRlcmF0b3IoUG9zaXRpb25CbG9jayAqcG9zQmxvY2tfKSB7CiAgICBwb3NCbG9jayA9IHBvc0Jsb2NrXzsKfQoKUG9zaXRpb25CbG9ja0l0ZXJhdG9yICogUG9zaXRpb25CbG9jazo6Y3JlYXRlSXRlcmF0b3IoKXsKICAgIHJldHVybiBuZXcgUG9zaXRpb25CbG9ja0l0ZXJhdG9yKHRoaXMpOwp9CgppbnQgbWFpbigpIHt9