#include <bits/stdc++.h>
using namespace std;
const int NR = 1000;
string STRtip(string str1, string str2)
{
int sum[NR + 4], a[NR + 4], b[NR + 4];
if (str1.size() == 1 && str1[0] == '0') { return str1; }
if (str2.size() == 1 && str2[0] == '0') { return str2; }
int len1 = str1.size(), len2 = str2.size();
for (int i = 0; i < len1;i++) { a[i] = str1[len1 - i - 1] - '0'; }
for (int i = 0; i < len2;i++) { b[i] = str2[len2 - i - 1] - '0'; }
int jw = 0; int len = len1 + len2 - 1;
for (int i = 0; i < len1; i++)
{
jw = 0;
for (int j = 0; j < len2; j++)
{
sum[i + j] = a[i] * b[j] + jw + sum[i + j];
jw = sum[i + j] % 10;
sum[i + j] = sum[i + j] / 10;
}
sum[i + len2] = jw;
}
string ans;
for (int i = 0; i < len ; i++)
{
ans[i] = sum[len - i - 1] + '0';
}
return ans;
}
string STRadd(string str1, string str2)
{
int sum[NR] = { 0 }, a[NR] = { 0 }, b[NR] = { 0 };
int len1 = str1.size(), len2 = str2.size();
for (int i = 0; i < len1; i++) { a[i] = str1[len1 - i - 1] - '0'; }
for (int i = 0; i < len2; i++) { b[i] = str2[len2 - 1 - i] - '0'; }
int jw = 0; int len = max(len1, len2);
for (int i = 0; i < len; i++)
{
sum[i] = a[i] + b[i] + jw;
jw = sum[i] % 10;
sum[i] = sum[i] / 10;
}
for (int i = len - 1; i > 0; i--)
{
if (sum[i] == '0' && len > 1) { len--; }
else { break; }
}
string ans;
for (int i = 0; i < len; i++)
{
ans[i] = sum[len - 1 - i] + '0';
}
return ans;
}
int main()
{
int n;
cin >> n;
string ans="1";
string time;
string ok;
if (n == 1) { cout << '1'; }
else
{
for (int i = 1; i < n; i++)
{
for (int j = 1; j <= i; j++)
{
string m = to_string(j);
ans = STRtip(ans, m);
}
ok = STRadd(ans, time);
time = ok;
}
}
cout << time;
}