output_description: Print the minimum integer m that satisfies the condition.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      s
attempt: #include "bits/stdc++.h"
  
  using namespace std;
  #ifdef _DEBUG
  #define _GLIBCXX_DEBUG
  #include "dump.hpp"
  #else
  #define dump(...)
  #endif
  
  #define int long long
  #define ll long long
  #define ll1 1ll
  #define ONE 1ll
  #define DBG 1
  #define rep(i, a, b) for (int i = (a); i < (b); i++)
  #define rrep(i, a, b) for (int i = (b)-1; i >= (a); i--)
  #define loop(n) rep(loop, (0), (n))
  #define all(c) begin(c), end(c)
  const int INF =
  sizeof(int) == sizeof(long long) ? 0x3f3f3f3f3f3f3f3fLL : 0x3f3f3f3f;
  const int MOD = (int)(1e9) + 7;
  const double PI = acos(-1);
  const double EPS = 1e-9;
  #define fi first
  #define se second
  #define pb push_back
  #define eb emplace_back
  using pii = pair<int, int>;
  // template<class T> ostream &operator<<(ostream &os,T &t){dump(t);return os;}
  template <typename T, typename S>
  istream &operator>>(istream &is, pair<T, S> &p) {
  	is >> p.first >> p.second;
  	return is;
  }
  template <typename T, typename S>
  ostream &operator<<(ostream &os, pair<T, S> &p) {
  	os << p.first << " " << p.second;
  	return os;
  }
  
  template <typename T> void printvv(const vector<vector<T>> &v) {
  	cerr << endl;
  	rep(i, 0, v.size()) rep(j, 0, v[i].size()) {
  		if (typeid(v[i][j]).name() == typeid(INF).name() and v[i][j] == INF) {
  			cerr << "INF";
  		}
  		else
  			cerr << v[i][j];
  		cerr << (j == v[i].size() - 1 ? '\n' : ' ');
  	}
  	cerr << endl;
  }
  /*
  typedef __int128_t Int;
  std::ostream &operator<<(std::ostream &dest, __int128_t value) {
  std::ostream::sentry s(dest);
    if (s) {
  	__uint128_t tmp = value < 0 ? -value : value;
  	char buffer[128];
  	char *d = std::end(buffer);
  	do {
  	  --d;
  	  *d = "0123456789"[tmp % 10];
  	  tmp /= 10;
  	} while (tmp != 0);
  	if (value < 0) {
  	  --d;
  	  *d = '-';
  	}
  	int len = std::end(buffer) - d;
  	if (dest.rdbuf()->sputn(d, len) != len) {
  	  dest.setstate(std::ios_base::badbit);
  	}
    }
    return dest;
  }
  
  __int128 parse(string &s) {
    __int128 ret = 0;
    for (int i = 0; i < s.length(); i++)
  	if ('0' <= s[i] && s[i] <= '9')
  	  ret = 10 * ret + s[i] - '0';
    return ret;
  }
  */
  
  #ifndef _DEBUG
  #define printvv(...)
  #endif
  void YES(bool f) { cout << (f ? "YES" : "NO") << endl; }
  void Yes(bool f) { cout << (f ? "Yes" : "No") << endl; }
  template <class T> bool chmax(T &a, const T &b) {
  	if (a < b) {
  		a = b;
  		return true;
  	}
  	return false;
  }
  template <class T> bool chmin(T &a, const T &b) {
  	if (a > b) {
  		a = b;
  		return true;
  	}
  	return false;
  }
  
  signed main(signed argc, char *argv[]) {
  	cin.tie(0);
  	ios::sync_with_stdio(false);
  	cout << fixed << setprecision(12);
  
  	int s; cin >> s;
  	set<int>st;
  	st.insert(s);
  	auto f = [&](int n) {
  		if (n % 2 == 0)return n / 2;
  		else return 3 * n + 1;
  	};
  	int i = 2;
  	for (;; i++) {
  		s = f(s);
  		if (st.count(s))break;
  		st.insert(s);
  	}
  	cout << i  << endl;
  
  	return 0;
  }
  
problem_description: Statement
  
  A sequence a=\\{a_1,a_2,a_3,......\\} is determined as follows:
  
    * The first term s is given as input.
  
    * Let f(n) be the following function: f(n) = n/2 if n is even, and f(n) = 3n+1 if n is odd.
  
    * a_i = s when i = 1, and a_i = f(a_{i-1}) when i > 1.
  
  Find the minimum integer m that satisfies the following condition:
  
    * There exists an integer n such that a_m = a_n (m > n).
samples: [{"input": "8", "output": "5\n    \n\na=\\\\{8,4,2,1,4,2,1,4,2,1,......\\\\}. As a_5=a_2, the answer is 5.\n\n* * *"}, {"input": "7", "output": "18\n    \n\na=\\\\{7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1,4,2,1,......\\\\}.\n\n* * *"}, {"input": "54", "output": "114"}]