//#include <iterator>
#include <cstdio>
struct A{
struct iterator/*: public std::iterator<std::input_iterator_tag, int>*/{
A& up;
int i;
iterator(A& up,int i):up(up),i(i){}
bool operator!=(iterator const& b) {
return i != b.i;
}
int operator*() {
return up.b;
}
iterator& operator++(){
int r=up.a+up.b;
up.b=up.a;
up.a=r;
i-=1;
return *this;
}
};
int n,a=1,b=1;
A(int n):n(n){}
iterator begin(){
return iterator(*this,n);
}
iterator end(){
return iterator(*this,0);
}
};
int main()
{
for (auto x:A(10)){
printf("%-3d",x);
}
}
Ly8jaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxjc3RkaW8+CgpzdHJ1Y3QgQXsKCXN0cnVjdCBpdGVyYXRvci8qOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZywgaW50PiovewoJCUEmIHVwOwoJCWludCBpOwoJCWl0ZXJhdG9yKEEmIHVwLGludCBpKTp1cCh1cCksaShpKXt9CgkJYm9vbCBvcGVyYXRvciE9KGl0ZXJhdG9yIGNvbnN0JiBiKSB7CgkJCXJldHVybiBpICE9IGIuaTsKCQl9CgkJaW50IG9wZXJhdG9yKigpIHsKCQkJcmV0dXJuIHVwLmI7CgkJfQoJCWl0ZXJhdG9yJiBvcGVyYXRvcisrKCl7CgkJCWludCByPXVwLmErdXAuYjsKCQkJdXAuYj11cC5hOwoJCQl1cC5hPXI7CgkJCWktPTE7CgkJCXJldHVybiAqdGhpczsKCQl9Cgl9OwoJaW50IG4sYT0xLGI9MTsKCUEoaW50IG4pOm4obil7fQoJaXRlcmF0b3IgYmVnaW4oKXsKCQlyZXR1cm4gaXRlcmF0b3IoKnRoaXMsbik7Cgl9CglpdGVyYXRvciBlbmQoKXsKCQlyZXR1cm4gaXRlcmF0b3IoKnRoaXMsMCk7Cgl9Cn07CgppbnQgbWFpbigpCnsKCWZvciAoYXV0byB4OkEoMTApKXsKCQlwcmludGYoIiUtM2QiLHgpOwoJfQp9Cg==