#include using namespace std; using ll = long long; const ll mod = 998244353; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); vector dif(1000); for (int i = 0; i < 1000; i++) { int j = i; while (true) { if (j == 1000 || j / 100 > (j / 10) % 10 + j % 10) break; j++; } dif[i] = j - i; } int T; cin >> T; while (T--) { string N; cin >> N; vector>>> dp(2, vector>>(10, vector>(10, vector(10)))); dp[1][0][0][0] = 1; for (char c: N) { int d = c - '0'; vector>>> ndp(2, vector>>(10, vector>(10, vector(10)))); for (int b = 0; b < 2; b++) { for (int s = 0; s < 10; s++) { for (int t = 0; t < 10; t++) { for (int u = 0; u < 10; u++) { for (int v = max(0, t - u); v < 10; v++) { if (b == 1 && v > d) break; int nb = b; if (b == 1 && v < d) nb = 0; ndp[nb][t][u][v] += dp[b][s][t][u]; ndp[nb][t][u][v] %= mod; } } } } } dp = ndp; } ll n = stoll(N); ll ans = (n % mod) * (n % mod + 1) / 2 % mod; for (int b = 0; b < 2; b++) { for (int s = 0; s < 10; s++) { for (int t = 0; t < 10; t++) { for (int u = 0; u < 10; u++) { // cout << b << ' ' << s * 100 + t * 10 + u << ' ' << dp[b][s][t][u] << '\n'; ans += dp[b][s][t][u] * dif[s * 100 + t * 10 + u] % mod; ans %= mod; } } } } ans -= 100; if (ans < 0) ans += mod; cout << ans << '\n'; } }