/*
假设当前有a个A b个B c个C 用 f[a][b][c]来表示
那么如果这个串以A结尾 那就是 f[a-1][b][c]转移来的
所以构成 f[a][b][c]的串一定有一部分是 f[a-1][b][c]
同理 B C 所以:
f[a][b][c] = f[a-1][b][c]+f[a][b-1][c]+f[a][b][c-1]
至于题目里那个什么前缀什么规则 既然f[1][1][1] 合法
那么他转移出来的 f[1][1][2] f[1][2][1] f[2][1][1]自然也合法
最后输出 f[n][n][n]
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int f[61][61][61][101],n;
void add(int i,int j,int k,int a,int b,int c)
{
int l;
for(l=1;l<=100;l++)
f[i][j][k][l]=f[i][j][k][l]+f[a][b][c][l];
for(l=1;l<=100;l++)
if(f[i][j][k][l]>=10)
{
f[i][j][k][l+1]++;
f[i][j][k][l]-=10;
}
}
int main()
{
cin>>n;
int i,j,k;
f[0][0][0][1]=1;
f[0][0][0][0]=1;
for(i=0;i<=n;i++)
for(j=0;j<=i;j++)
for(k=0;k<=j;k++)
{
if(i>0)
add(i,j,k,i-1,j,k);
if(j>0)
add(i,j,k,i,j-1,k);
if(k>0)
add(i,j,k,i,j,k-1);
}
for(i=100;i>=1;i--)
if(f[n][n][n][i]>0)
{
k=i;break;
}
for(i=k;i>=1;i--)
cout<<f[n][n][n][i];
return 0;
}