#include <stdio.h>
#include <stdlib.h>

typedef struct series series;
struct series {
	long num;
	series *next;
};
series *head = NULL;

void addhead(long x)
{
	series *p;
	p = (series *) malloc(sizeof (series));	
	p->num = x;
	p->next = head;
	head = p;
	//printf("added: %ld\n", x);
}
void series_generate(long num)
{
	long n = 1;
	addhead(n);
	while (n < num) 
	{
		series *p;
		for (p = head; p != NULL; p = p->next)
		{
			long bf = p->num - 1;
			if (p->num%2 == 0 && bf != 0 && bf%3 == 0) {
				bf /= 3;
				if (bf != 1)
				addhead(bf);
				if (bf < num)
					n++; 
				//printf("new num: %ld\n", bf);
			}
			p->num *= 2;
			if ( p->num < num)
				n++;
 			//printf("new num: %ld\n", p->num);

		}	
	}	
}
int main()
{
	long num = 1000000;
	series_generate(num);
	series *p;
	for (p = head; p != NULL; p = p->next) {
		if (p->num < num) {
			printf("%ld\n", p->num);
			break;
		}
	}
	return 0;
}