## 3n+1

Pick a positive integer n. If it is odd, multiply it by three and then add one. Otherwise (if it is even), divide it by two. The positive integer obtained is the new n, and this procedure is repeated.

It is believed that n will eventually become 1 (this is called the Collatz conjecture.) Computers have checked that any value of n less than 5×1018 does, indeed, eventually become 1 if this procedure is applied enough times.

You will be given the value of n. Determine how many times this procedure must be applied before n becomes 1.

### Input

The initial value of n.

### Output

The number of operations we have to perform on n before it becomes 1.

`7`

`16`

### Explanation

n will go through these steps:
7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

### Constraints

Any value of n, initial or intermediate, will be less than 231.

Point Value: 5
Time Limit: 2.00s
Memory Limit: 16M

Languages Allowed:
C++03, PAS, C, HASK, ASM, RUBY, PYTH2, PHP, SCM, CAML, PERL, C#, C++11, PYTH3

• (3/1)
I had done many other questions and this was no exception.
I used Java and copied the code onto the project name.
However, it still gives me a compile error saying that "public class 3nplus1{" is incorrect.

• (5/1)
3nplus1 is an exception. Java does not permit you to begin class names with numbers. This conflicts with our requirement to use the problem code as the class name.

We're working on a way to resolve this, but for now, this problem cannot be done in Java.

• (5/1)
Change the problem code to something like threenplusone?

• (1/1)
Changing problem codes is not trivial, but we do plan to allow it eventually.

• (3/1)
I would like to know when you have resolved this error for Java

Thanks

• (1/1)
Maybe you could take Java off the languages allowed if it doesn't compile properly?

• (1/2)
Unhandled Exception: System.Security.Cryptography.CryptographicException: Couldn't access random source.
at System.Security.Cryptography.RNGCryptoServiceProvider.Check () [0x00000]
at System.Security.Cryptography.RNGCryptoServiceProvider..ctor () [0x00000]
at System.Guid.FastNewGuidArray () [0x00000]
at System.Reflection.Emit.ModuleBuilder..ctor (System.Reflection.Emit.AssemblyBuilder assb, System.String name, System.String fullyqname, Boolean emitSymbolInfo, Boolean transient) [0x00000]
at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule (System.String name, System.String fileName, Boolean emitSymbolInfo, Boolean transient) [0x00000]
at System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule (System.String name, System.String fileName, Boolean emitSymbolInfo) [0x00000]
at Mono.CSharp.CodeGen.Init (System.String name, System.String output, Boolean want_debugging_support) [0x00000]
at Mono.CSharp.Driver.Compile () [0x00000]
at Mono.CSharp.Driver.Main (System.String[] args) [0x00000]

• (4/1)
In the language dropdown list, it clearly says that C# is "(NOT WORKING)".

• (4/1)
This will be fixed eventually, but it's very low-pri.