#nullable enable #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Trim().Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion static T[] Range(int n, Func F) => Enumerable.Range(0, n).Select(_ => F()).ToArray(); const int Mod = 998244353; static long Power(long b, long p) { if (p == 0) return 1; if ((p & 1) != 0) return b * Power(b, p - 1) % Mod; var h = Power(b, p >> 1); return h * h % Mod; } var half = (Mod + 1) / 2; var inv10 = Power(10, Mod - 2); var inv11 = Power(11, Mod - 2); var ans = new List(); var t = I(); while (t-- > 0) { var cpz = Range(3, I); var gpz = Range(3, I); var ct = (cpz[0] - 1) / gpz[1] + 1; var gt = (gpz[0] - 1) / cpz[1] + 1; var min = Math.Min(ct, gt) - 1; (ct, gt) = (ct - min, gt - min); var cs = cpz[2]; var gs = gpz[2]; long cp = half; if (cs > gs) cp = 1; else if (cs < gs) cp = 0; var gp = (1 - cp + Mod) % Mod; var rev = false; if (gt > ct) { rev = true; (ct, gt) = (gt, ct); (cp, gp) = (gp, cp); } var l = (cp * 10 % Mod + gp) * inv11 % Mod; var tns = ((l - 1 + Mod) * Power(inv10, ct - 1) + 1) % Mod; if (rev) tns = (1 - tns + Mod) % Mod; ans.Add(tns); } Console.WriteLine(string.Join(Environment.NewLine, ans));