#include<iostream>
using namespace std;
bool flag[];
int que[];
int ans, num;
void check() {
int Li, Lk, Lj, di, dj, i;
for (di = ; di < ; ++di) {
Li = ;
for (i = ; i <= di; ++i) {
Li = Li * + que[i];
}
for (dj = ; di + dj < ; ++dj) {
Lj = ;
for (i = di + ; i <= di + dj; ++i) {
Lj = Lj * + que[i];
}
Lk = ;
for (i = di + dj + ; i < ; ++i) {
Lk = Lk * + que[i];
}
if (Li * Lj - Lk == num) {
++ans;
}
}
}
}
void dfs(int number) {
if (number > ) {
check();
}
int i;
for (i = ; i < ; ++i) {
if (!flag[i]) {
flag[i] = true;
que[number] = i;
dfs(number + );
flag[i] = false;
}
}
}
int main()
{
cin >> num;
dfs();
cout << ans << endl;
return ;
}