#include #include #include int crt(int a, int b) { constexpr int MOD1 = 998244353, MOD2 = 1000000007; const long long inv = atcoder::modint1000000007(MOD1).inv().val(); long long t = (inv * (b - a) % MOD2 + MOD2) % MOD2; int res = (t * MOD1 + a) % 9; return (res > 0) ? res : 9; } template int _solve(std::string s) { using namespace std; int n = s.size(); vector fac(n), ifac(n); fac[0] = 1; for (int i = 0; i < n - 1; i++) { fac[i + 1] = fac[i] * (i + 1); } ifac[n - 1] = fac[n - 1].inv(); for (int i = n - 2; i >= 0; i--) { ifac[i] = ifac[i + 1] * (i + 1); } auto comb = [&](int n, int r) -> mint { if (n < 0 || r < 0 || n < r) { return mint(0); } return fac[n] * ifac[r] * ifac[n - r]; }; mint res = 0; for (int i = 0; i < n; i++) { res += comb(n - 1, i) * (s[i] - '0'); } return res.val(); } void solve() { using namespace std; using mint1 = atcoder::modint998244353; using mint2 = atcoder::modint1000000007; string s; cin >> s; cout << crt(_solve(s), _solve(s)) << "\n"; } int main() { using namespace std; ios::sync_with_stdio(false); cin.tie(nullptr); int t; cin >> t; while (t--) { solve(); } }