#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using P = pair<ll,ll>;
#define fix(x) fixed << setprecision(x)
#define asc(x) x, vector<x>, greater<x>
#define rep(i, n) for(ll i = 0; i < n; i++)
#define all(x) (x).begin(),(x).end()
template<class T>bool chmin(T&a, const T&b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool chmax(T&a, const T&b){if(a<b){a=b;return 1;}return 0;}
constexpr ll INFLL = (1LL << 62), MOD = 998244353, inv2 = 499122177;
constexpr int INF = (1 << 30);

int main(){
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    int t;
    cin >> t;
    while(t--){
        ll n,m,l,r;
        cin >> n >> m >> l >> r;
        n--;
        ll v = r-l+1, z = r/n + (m-l)/n + 1;
        ll ans = (v%MOD)*(z%MOD)%MOD;
        ll x,y;
        x = l%n-n, y = l-r/n*n;
        ans += ((x+y)%MOD) * (((x-y)/n+1)%MOD) % MOD * inv2 % MOD;
        l = abs(l-m), r = abs(r-m);
        swap(l,r);
        x = l%n-n, y = l-r/n*n;
        ans += ((x+y)%MOD) * (((x-y)/n+1)%MOD) % MOD * inv2 % MOD;
        cout << (ans%MOD+MOD)%MOD << '\n';
    }
    return 0;
}