/*尽量将数组先开大。然后计算出最大值后再更改数组的最佳大小。
数组在全局变量开。
就是把数放在数组中模拟 if(((i-1)%2==0 && b[n])||((i-1)%3==0&&b[m])) 用这个条件来控制在数组中的数是之前的数生成的*/
#include <cstdio>
const int mm=55100000;
const int inf=1000001;
int a[inf];
bool b[mm];
int main()
{
for(int i=0;i<mm;i++)
b[i]=0;
b[1]=true;
a[1]=1;
int i=2;
int h=1;
do
{
i++;
int n=(i-1)/2;
int m=(i-1)/3;
if(((i-1)%2==0 && b[n])||((i-1)%3==0&&b[m]))
{
a[++h]=i;
b[i]=true;
}
} while(h<=1000000);
int n;
while(scanf("%d",&n)==1)
printf("%d\n", a[n]);
return 0;
}