#include using namespace std; #define ll long long #define ld long double #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) #define FOR(i, a, b) for (ll i = (a); i < (ll)(b); i++) #define FORR(i, a, b) for (ll i = (a); i <= (ll)(b); i++) #define repR(i, n) for (ll i = n - 1; i >= 0LL; i--) #define all(v) (v).begin(), (v).end() #define rall(v) (v).rbegin(), (v).rend() #define F first #define S second #define pb push_back #define pu push #define COUT(x) cout << (x) << "\n" #define YES(n) cout << ((n) ? "YES\n" : "NO\n") #define Yes(n) cout << ((n) ? "Yes\n" : "No\n") #define mp make_pair #define sz(x) (ll)(x).size() typedef pair pii; typedef pair pll; typedef tuple tll; using u64 = unsigned long long; using vii = vector; using vvii = vector; using vll = vector; using vb = vector; using vvb = vector; using vvll = vector; using vvvll = vector; using vstr = vector; using vc = vector; using vvc = vector; template using PQ = priority_queue; template using PQR = priority_queue, greater>; // const ll MOD = 1e9+7LL; const ll MOD = 998244353LL; const ll INF = 1LL << 62; const double INF_D = numeric_limits::infinity(); template constexpr void printArray(const vector &vec, char split = ' ') { rep(i, vec.size()) { cout << vec[i]; cout << (i == (int)vec.size() - 1 ? '\n' : split); } } template inline bool chmax(T &a, T b) { if (a < b) { a = b; return true; } return false; } template inline bool chmin(T &a, T b) { if (a > b) { a = b; return true; } return false; } ll dx[4] = {0, 1, 0, -1}; ll dy[4] = {1, 0, -1, 0}; bool isIn(ll nx, ll ny, ll h, ll w) { if (nx >= 0 && nx < h && ny >= 0 && ny < w) { return true; } return false; } long long modpow(long long a, long long n, long long mod) { a %= mod; long long res = 1; while (n > 0) { if (n & 1) res = res * a % mod; a = a * a % mod; n >>= 1; } return res; } // a^{-1} mod を計算する long long modinv(long long a, long long mod) { return modpow(a, mod - 2, mod); } int main() { ll t; cin >> t; rep(T, t) { ll hc, ac, sc, hg, ag, sg; cin >> hc >> ac >> sc >> hg >> ag >> sg; ll c_t = (hg + ac - 1) / ac; ll g_t = (hc + ag - 1) / ag; ll who = 1; if (c_t > g_t) { who = 0; swap(hc, hg); swap(ac, ag); swap(sc, sg); swap(c_t, g_t); } ll k = modpow(10, g_t - c_t, MOD); ll ans = (k - 1 + MOD) % MOD * modinv(k, MOD); if (g_t == c_t) ans = 0; ll r = (1 - ans + MOD) % MOD; if (sc > sg) { r *= (10 * modinv(11, MOD)) % MOD; } else if (sc < sg) { r *= modinv(11, MOD); } else { r *= (99 * modinv(198, MOD)) % MOD; } r %= MOD; ans += r; ans %= MOD; if (who) { cout << ans << endl; } else { cout << (1 - ans + MOD) % MOD << endl; } } } /*cin.tie(0); ios::sync_with_studio(false); next_permutation(v.begin(), v.end()) cout << fixed << setprecision(10); __int128 //ソート済み v.erase(unique(v.begin(), v.end()), v.end()); __builtin_popcountll(i) // maskからnowのビットだけ削除 mask & ~(1 << now) */