#include using namespace std; #include using namespace atcoder; using mint = modint998244353; int ky[] = {4, 0, 4}; int main () { string s; cin >> s; int N = s.size(); std::vector A; for (auto& a : s) { A.push_back(a - '0'); } vector dp(2, vector(3, mint(0))); dp[0][0] = 1; for (auto& a : A) { vector dp2(2, vector(4, mint(0))); for (int m = 0; m < 2; m ++) { for (int d = 0; d <= (m ? 9 : a); d ++) { for (int s = 0; s < 3; s ++) { if (d == ky[s]) { dp2[m || (d < a)][s + 1] += dp[m][s]; } else { dp2[m || (d < a)][d == 4] += dp[m][s]; } } } } for (int i = 0; i < 2; i ++) { for (int j = 0; j < 3; j ++) { dp[i][j] = dp2[i][j]; } } } mint ans = 0; for (auto& a : dp) { for (auto& b : a) { ans += b; } } cout << ans.val() << endl; }