#include <iostream>
#include <vector>

std::vector<int> GenerateArray(std::size_t N){
	std::vector<int> vec;

	vec.push_back(0);
	vec.push_back(1);
	//vec.push_back(2);

	for (std::size_t i = 1; i < N; i++)
	{
		vec.push_back(1 + vec[i + 1 - vec[vec[i]]]);
		if (vec.size() > N) return vec;
	}
	return vec;
}

int main(){
	auto R = GenerateArray(1000);

	std::cout <<"N=10:"<< R[10] << std::endl;
	std::cout <<"N=100:"<< R[100] << std::endl;
	std::cout <<"N=1000:"<< R[1000] << std::endl;

	return 0;
}