#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
string Add(string s1, string s2) {
int l1 = s1.size(), l2 = s2.size();
if (l1 < l2)swap(s1, s2);
reverse(s1.begin(), s1.end());
reverse(s2.begin(), s2.end());
int car = 0;
string s = "";
for (int i = 0; i < s2.size(); i++) {
int num = (s1[i] - '0') + (s2[i] - '0') + car;
car = num / 10;
char c = num % 10 + '0';
s = s + c;
}
for (int i = s2.size(); i < s1.size(); i++) {
int num = (s1[i] - '0') + car;
car = num / 10;
char c = num % 10 + '0';
s = s + c;
}
if (car)s = s + "1";
reverse(s.begin(), s.end());
while (s[0] == '0')s.erase(0, 1);
if (s == "")s = "0";
return s;
}
string Mul(string s1, string s2) {
int l1 = s1.size(), l2 = s2.size();
if (l1 < l2)swap(s1, s2);
reverse(s1.begin(), s1.end());
reverse(s2.begin(), s2.end());
int len = l1 + l2 + 3;
int ans[len];
memset(ans,0,sizeof(ans));
for (int i = 0; i < s1.size(); i++) {
for (int j = 0; j < s2.size(); j++) {
int num = (s1[i] - '0') * (s2[j] - '0');
ans[i + j] += num;
}
}
string s = "";
for (int i = 0; i < len; i++) {
int num = ans[i] / 10;
ans[i] = ans[i] % 10;
ans[i + 1] += num;
char c = ans[i] + '0';
s = s + c;
}
reverse(s.begin(), s.end());
while (s[0] == '0')s.erase(0, 1);
if (s == "")s = "0";
return s;
}
string ItoS(int x) {
string s = "";
while (x != 0) {
char c = x % 10 + '0';
s = s + c;
x /= 10;
}
reverse(s.begin(), s.end());
return s;
}
int main() {
int n, m, p;
string s1 = "0", s2 = "0";
while (cin >> n) {
if (n % 2 == 0) {
m = n - 1;
p = n;
} else {
m = n;
p = n - 1;
}
string ans1 = "1", ans2 = "1";
for (int i = 1; i <= m; i ++) {
string str = ItoS(i);
// cout<<"str: "<<str<<endl;
ans1 = Mul(ans1, str);
// cout<<"ans1 = "<<ans1<<endl;
if(i%2!=0)s1 = Add(ans1, s1);
}
for (int i = 2; i <= p; i ++) {
string str = ItoS(i);
ans2 = Mul(ans2, str);
// cout<<ans2<<endl;
if(i%2==0)s2 = Add(ans2, s2);
}
cout<<s1<<" "<<s2<<endl;
}
// string s1 = "901";
// string s2 = "10";
// string s = Mul(s1,s2);
// string s = Add(s1,s2);
// cout<<s<<endl;
}