#include<bits/stdc++.h>
using namespace std;
void solve() {
int mod = 998244353;
long long n,m; cin>>n>>m;
if (n<m) swap(n,m);
long long k, ans;
if (n%2 == 1) {
// only row n/2;
k = n/2;
long long row = (k+1);
if (m-1<=k) {
// consider all columns
ans = (row*((m*(m+1)/2)%mod))%mod;
} else {
long long left = max((long long)1,(m-k)%mod);
long long right = min(m,(k+1)%mod);
left--;
ans = (row * (((right*(right+1))/2)%mod - ((left*(left+1))/2)%mod )%mod)%mod;
}
} else {
// row n/2 and (n/2)+1
k = n/2;
long long row = k;
if (m-1<=k) {
// consider all columns
ans = (row*((m*(m+1)/2)%mod))%mod;
row++; // calculate for next row also
ans = (ans + (row*((m*(m+1)/2)%mod))%mod)%mod;
} else {
long long left = max((long long)1,(m-k)%mod);
long long right = min(m,(k+1)%mod);
left--;
ans = (row * (((right*(right+1))/2)%mod - ((left*(left+1))/2)%mod )%mod)%mod;
row++; // calculate for next row also
ans = (ans + (row * (((right*(right+1))/2)%mod - ((left*(left+1))/2)%mod )%mod)%mod)%mod;
}
}
cout<<ans<<"\n";
}
int main()
{
int t; cin >> t;
while (t--) {
solve();
}
}
Out of 3 Test cases, the first 2 Test cases are passing.
Can anyone please say why the third Test case is failing?
Submission Link: CodeChef: Practical coding for everyone
Thank you