#include <iostream>
using namespace std;

long arr[10000];
long dp(int n)  
{ 
    if(n==2|| n==1) return 1;
    
    if (n >= 10000) {
    	std::cout << n << " is really big\n";
    	return 1 + dp((n % 2 == 0) ? n / 2 : 3 * n + 1);
    }
    
    if(arr[n]) return arr[n];



    if(n%2==0) return arr[n]=1+dp(n/2);
    else if(n%2==1) return arr[n]=1+dp(3*n+1);
    return arr[n];
}

int main() {
	
	for (int n : {999, 907}) {
	    const long res = dp(n);
	    std::cout << "count for " << n << " is " << res << std::endl;
	}
}