#include using namespace std; using int64 = long long; const int64 MOD = 998244353; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T; cin >> T; const int64 INV2 = (MOD + 1) / 2; // 2 の逆元 while (T--) { int64 N, A; cin >> N >> A; if (A == 1) { // 全部 +1 だけ int64 n = N % MOD; int64 nm1 = (N - 1) % MOD; int64 ans = n * nm1 % MOD * INV2 % MOD; cout << ans << "\n"; continue; } int64 ans = 0; int64 S = 0; // S_j を累積 (mod MOD) int64 x = N; while (x > 0) { int64 x_next = x / A; int64 L = x - x_next; // 区間長 L_j int64 Lm = L % MOD; // L_j * S_j int64 term1 = Lm * S % MOD; // L_j*(L_j-1)/2 int64 term2 = Lm * ((L - 1) % MOD + MOD) % MOD * INV2 % MOD; ans = (ans + term1 + term2) % MOD; // 次の S_{j+1} = S_j + (r_j+1) int64 r = x % A; S = (S + (r % MOD) + 1) % MOD; x = x_next; } cout << ans << "\n"; } return 0; }