#include #include #include #include #include #include #include #include #include #include #include static const int MOD = 1000000007; using ll = long long; using namespace std; template constexpr T INF = ::numeric_limits::max()/32*15+208; template vector make_v(U size, const T& init){ return vector(static_cast(size), init); } template auto make_v(U size, Ts... rest) { return vector(static_cast(size), make_v(rest...)); } template void chmin(T &a, const T &b){ a = (a < b ? a : b); } template void chmax(T &a, const T &b){ a = (a > b ? a : b); } int main() { int m = 100001; vector fact(m, 1), zeros(m, 0); array inv{0, 1, 5, 0, 7, 2, 0, 4, 8}; for (int i = 1; i < m; ++i) { int x = i; zeros[i] = zeros[i-1]; while(x % 3 == 0) x /= 3, zeros[i]++; fact[i] = fact[i-1]*x%9; } auto binom = [&](int n, int m){ int z = zeros[n]-zeros[m]-zeros[n-m]; if(z >= 2) return 0; return fact[n]*inv[fact[m]]*inv[fact[n-m]]*(z ? 3 : 1)%9; }; int t; cin >> t; while(t--){ string s; cin >> s; int n = s.size(); if(s == string(n, '0')) { puts("0"); continue; } int ans = 8; for (int i = 0; i < n; ++i) { ans = (ans + binom(n-1, i)*(s[i]-'0'))%9; } cout << ans+1 << "\n"; } return 0; }