Post

CSES: Weird Algorithm

CSES: Weird Algorithm

Introductory Problems - Weird Algorithm

  • Time limit: 1.00 s
  • Memory limit: 512 MB

Consider an algorithm that takes as input a positive integer $n$. If $n$ is even, the algorithm divides it by two, and if $n$ is odd, the algorithm multiplies it by three and adds one. The algorithm repeats this, until $n$ is one. For example, the sequence for $n=3$ is as follows:

\[3 \rightarrow 10 \rightarrow 5 \rightarrow 16 \rightarrow 8 \rightarrow 4 \rightarrow 2 \rightarrow 1\]

Your task is to simulate the execution of the algorithm for a given value of $n$.

Input

The only input line contains an integer $n$.

Output

Print a line that contains all values of nnn during the algorithm.

Constraints

\(1 \le n \le 10^6\)

Example

Input:
1
3
Output:
1
3 10 5 16 8 4 2 1

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;
int main() {
    long long int n;
    cin >> n;
    while(n>1) {
        cout << n << " ";
        if(n%2==0)
            n=n/2;
        else
            n=n*3+1;
    }
    cout << n ;
    return 0;
}
This post is licensed under CC BY 4.0 by the author.