Fiz o seguinte código, e o número que digito deveria ser o número de respostas apresentadas porém meu codigo encerra depois de 1476 e não vai além disso. Alguém saberia me dizer o que fazer? 
 
	#include <iostream> 
	#include <cstdlib> 
	#include <iomanip>
 
	using namespace std;
 
	void verificar(); 
	int i=0; 
	int x=0; 
	int y=1; 
	int z=1; 
	long double d=0; 
	long double f1=0,f2=1,f3=1;
 
	 
	int main (){//Declarar variáveis
 
	a: 
	i=0;y=1;f1=0;f2=1;f3=1;z=1; 
	cout<<"Entre o numero de posicoes que deseja mostrar"<<endl;    //Solicitar entrada de posições 
	cin>>x; cout<<"\n";   //Entrada do usuário 
	    while(i<x){//Loop para definir somas 
	       d=f3; //verificar(); 
	while(d>1){d=d/10;z++;} 
	        cout<<setprecision(z)<<"termo "<<y<<" = "<<f3<<endl; 
	        f3=f1+f2;    //Soma das posições 
	        f1=f2;      //Define f1 com o valor da posição sucessora 
	        f2=f3;     //Define f2 com o valor da posição sucessora 
	        i++; 
	        y++; 
	        z=1;    //verificar();
 
	}
 
	system("pause"); 
	system("cls"); 
	goto a; 
	return 0;}
 
	 
	void verificar (){ 
	cout<<"x:"<<x<<"\n"; 
	cout<<"i:"<<i<<"\n"; 
	cout<<"f1"<<"["<<i<<"]"<<":"<<f1<<"\n"; 
	cout<<"f2"<<"["<<i<<"]"<<":"<<f2<<"\n"; 
	cout<<"f3"<<"["<<i<<"]"<<":"<<f3<<"\n"; 
	system("pause");
 
	}