#include<bits/stdc++.h>
using namespace std;
int m[1000][1000];
int num[1000];
void mul(int a,int b,int c) //高精乘
{
for(int j=1;j<=num[a];j++)
{
for(int t=1;t<=num[b];t++)
{
m[c][j+t-1]=m[a][j]*m[b][t];
}
}
int len=1;
while(m[c][len]) //处理进位
{
m[c][len+1]+=m[c][len]/10;
m[c][len]%=10;
len++;
}
len--;
num[c]=len; //记录进位后的长度
}
void plu(int a,int b,int c) //高精加
{
int t;
t=max(num[b],num[a]);
for(int i=1;i<=t;i++)
{
m[c][i]=m[a][i]+m[b][i];
}
int len=1;
while(m[c][len]) //处理进位
{
m[c][len+1]+=m[c][len]/10;
m[c][len]%=10;
len++;
}
len--;
num[c]=len; //记录进位后的长度,并返回值给 int main 以便倒序输出操作
}
int main()
{
int s;
cin>>s;
for(int i=1;i<=s;i++)
{
int x=1,d=i;
while(d)
{
m[i][x]=d%10;
d/=10;
x++;
}
x--;
num[i]=x;
}
mul(1,2,51); //给定初始值,运用高精乘
for(int i=3;i<=s;i++)
mul(i,48+i,49+i);
plu(1,51,100); //给定初始值,运用高精加
int i;
for(i=3;i<=s;i++)
plu(49+i,97+i,98+i);
i--;
int d=98+i;
for(int i=num[d];i>=1;i--) cout<<m[d][i]; //倒序输出
return 0;
}