#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
int x; cin >> x;
int cnt=0;
int x0 = x;
for (int i = 2; i <= x0 / i; i++)
{
if (x % i == 0)cnt++;
while (x % i == 0)
x = x / i;
}
if (x != 1)cnt++;
cout << cnt;
}
signed main()
{
solve();
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n; string st;
char ch;
vector<int>p;
void solve()
{
cin >> n;
cin >> ch;
cin >> st;
st = '*' + st;
int m = n/2;
for (int i = 1; i <= n; i++)
if (st[i] == ch)
{
if (i > m)
p.push_back(n - i + 1);
else
p.push_back(i);
}
ll ans = 0;
for (int k : p)
ans += k;
cout << ans;
}
int main()
{
solve();
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int M = 1e9 + 7;
const int N = 1e3 + 5;
int c[N][N];
void solve()
{
int x, y;
cin >> x >> y;
//求组合数
c[0][0] = 1;
for(int i=1;i<=1000;i++)
{
c[i][0] = 1;
for (int j = 1; j <= i; j++)
c[i][j] = (c[i - 1][j] + c[i - 1][j - 1])%M;
}
for (int i = 1; i <= x + y; i++)
{
int ca = (i + 1) / 2;
int cb = i - ca;
int ans = 0;
if (ca == 0 || cb == 0)
{
cout << 0 << endl;
continue;
}
if (ca <= x && cb <= y)
{
ans += (c[x - 1][ca - 1] * c[y - 1][cb - 1]) % M;
ans %= M;
}
swap(ca, cb);
if (ca <= x && cb <= y)
{
ans += (c[x - 1][ca - 1] * c[y - 1][cb - 1]) % M;;
ans %= M;
}
cout << ans << endl;
}
}
signed main()
{
solve();
return 0;
}