#include <iostream>
struct range{
struct iterator{
int i;
int operator*() const {return i;}
iterator& operator++() {++i;return *this;}
bool operator!=(iterator const& rhs) const{return i!=rhs.i;}
};
int b;
int e;
explicit range(int e):range(0,e){}
range(int b,int e):b{b},e{e}{}
iterator begin() const{return {b};}
iterator end() const {return {e};}
};
int main()
{
for(int i:range(10)) {
std::cout<<i<<std::endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpzdHJ1Y3QgcmFuZ2V7CiAgc3RydWN0IGl0ZXJhdG9yewogICAgaW50IGk7CiAgICBpbnQgb3BlcmF0b3IqKCkgY29uc3Qge3JldHVybiBpO30KICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeysraTtyZXR1cm4gKnRoaXM7fQogICAgYm9vbCBvcGVyYXRvciE9KGl0ZXJhdG9yIGNvbnN0JiByaHMpIGNvbnN0e3JldHVybiBpIT1yaHMuaTt9CiAgfTsKICBpbnQgYjsKICBpbnQgZTsKICBleHBsaWNpdCByYW5nZShpbnQgZSk6cmFuZ2UoMCxlKXt9CiAgcmFuZ2UoaW50IGIsaW50IGUpOmJ7Yn0sZXtlfXt9CiAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdHtyZXR1cm4ge2J9O30KICBpdGVyYXRvciBlbmQoKSBjb25zdCB7cmV0dXJuIHtlfTt9Cn07CgppbnQgbWFpbigpCnsgIAogIGZvcihpbnQgaTpyYW5nZSgxMCkpIHsKICAgIHN0ZDo6Y291dDw8aTw8c3RkOjplbmRsOwogIH0KfQoK