#include<iostream>
#include<vector>
#include<functional>
using namespace std;

template<typename T> class SequenceGen {
private:
  T _start; 
  T _step;
public:
  SequenceGen(T start = T(),T step = 1 ): _start(start),_step(step){};

  T operator()() {T tmp = _start; _start+= _step; return tmp;}
};

const size_t n = 20 ;

main() {
vector<int> v(n);

generate_n(v.begin(),n,SequenceGen<int>(1,2));
vector<int>::iterator it=find_if(v.begin(),v.end(),bind2nd(greater<int>(),4));
cout<<*it<<endl;
}