#include <iostream>
#include <functional>

struct wrap
{
	std::function<wrap ()> f;
	template<typename F>
	wrap(F f)
	: f(f)
	{
	}
	wrap operator()()
	{
		return f();
	}
};

wrap func_b(int x);
wrap func_c(int x);
wrap func_a(int x)
{
	std::cout << x << std::endl;
	return std::bind(func_c, x);
}
wrap func_b(int x)
{
	if(x&1)
	{
		return std::bind(func_a, -x*7);
	}
	else
	{
		return std::bind(func_a, -x/3);
	}
}
wrap func_c(int x)
{
	if(x > 0)
	{
		return std::bind(func_b, x+1);
	}
	else if(x < 0)
	{
		return std::bind(func_b, x-2);
	}
	else
	{
		return std::bind(func_a, x);
	}
}

int main()
{
	int x;
	std::cin >> x;
	auto f = func_c(x);
	while(true)
	{
		f = f();
	}
}
