#include<bits/stdc++.h>
#define ll long long
#define F(i, x, y) for(register int i = x; i <= y; ++ i)
using namespace std;
const int N = 5e6 + 5;
const int mod = 998244353;
const int G = 3;
const int GI = 332748118;
int la, lb, lim;
ll inv, x, n = 1;
ll a[N], b[N];
char s[N];
inline ll qpower(ll x, int y)
{
ll res = 1;
while(y)
{
if(y & 1) res = res * x % mod;
x = x * x % mod, y >>= 1;
}
return res;
}
inline void ntt(ll *a, int op)
{
F(i, 0, n - 1)
{
int t = 0;
F(j, 0, lim - 1) if((i >> j) & 1) t |= (1 << (lim - j - 1));
if(i < t) swap(a[i], a[t]);
}
for(int m = 1; m < n; m <<= 1)
{
ll omg = qpower((op == 1 ? G : GI), (mod - 1) / (m << 1));
for(int j = 0; j < n; j += (m << 1))
{
ll w = 1;
for(int i = 0; i < m; ++ i, w = w * omg % mod)
{
ll t = w * a[j + i + m] % mod;
a[j + i + m] = (a[j + i] - t + mod) % mod, a[j + i] = (a[j + i] + t) % mod;
}
}
}
}
inline void solve(int x)
{
lb = strlen(s);
F(i, 0, lb - 1) b[i] = s[lb - i - 1] - '0';
b[0] += x;
F(i, 1, lb - 1) b[i] += b[i - 1] / 10, b[i - 1] %= 10;
ntt(a, 1), ntt(b, 1);
F(i, 0, n) a[i] = a[i] * b[i] % mod, b[i] = 0;
ntt(a, -1), inv = qpower(n, mod - 2);
F(i, 0, n + 1) a[i] = a[i] * inv % mod;
F(i, 0, n + 1) a[i + 1] = (a[i + 1] + a[i] / 10) % mod, a[i] %= 10;
}
int main()
{
scanf("%s", s), la = strlen(s);
F(i, 0, la - 1) a[i] = s[la - i - 1] - '0';
++ a[0]; F(i, 1, la - 1) a[i] += a[i - 1] / 10, a[i - 1] %= 10;
while(n <= la * 5) n <<= 1, ++ lim;
solve(2), solve(3), solve(4);
for(int i = n; i >= 0; -- i) x = x * 10 + a[i], b[i] = x / 24, x %= 24;
lb = n; while(! b[lb - 1] && lb) -- lb;
for(int i = lb - 1; i >= 0; -- i) printf("%lld", b[i]);
return 0;
}