from collections import Counter

F = [1]
MOD = 998244353

def init_fact():
    f=1
    for i in range(1, 10**5+1):
        f*=i
        f%=MOD
        F.append(f)

def ways(a, b):
    if not a or not b:
        return 0
    ((a1, a2), sza) = a
    ((b1, b2), szb) = b
    if a1 < b1 or a2 < b2:
        return 0
    ans = (a1-b1+1) * (a2-b2+1)
    ans *= sza
    ans %= MOD
    ans *= F[szb]
    ans %= MOD
    return ans

if __name__ == "__main__":
    init_fact()
    t=int(input())
    while t>0:
        t-=1
        n=int(input())
        B=[]
        for _ in range(n):
            l1,l2=[int(x) for x in input().split()]
            B.append((min(l1, l2), max(l1, l2)))
        B.sort()

        no_sol = False

        for i in range(n-1):
            b1, b2=B[i],B[i+1]
            if b1[0] > b2[0] or b1[1] > b2[1]:
                no_sol = True
                break

        if no_sol:
            print(0)
            continue

        B=list(Counter(B).items())
        a=((B[-1][0][0], B[-1][0][1]), F[B[-1][1]])
        b=((B[-1][0][1], B[-1][0][0]), F[B[-1][1]]) if B[-1][0][0] != B[-1][0][1] else None

        i=len(B)-2

        while i>=0:
            ((l1, l2), cnt)=B[i]
            a_ = ((l1, l2), ways(a, B[i]) + ways(b, B[i]))
            b_ = ((l2, l1), ways(a, ((l2, l1), cnt)) + ways(b, ((l2, l1), cnt))) if l1 != l2 else None
            a,b=a_,b_
            i-=1

        print((a[1]+(b[1] if b else 0))%MOD)
