#!/usr/bin/python3 mod = 1000000000 + 7 tasks = int(input()) for _ in range(tasks): n = int(input()) # Přečti vstup seřazený od největší po nejmenší. distances = sorted(map(int, input().split()), reverse=True) fuel = sorted(map(int, input().split()), reverse=True) assert(n == len(distances)) assert(n == len(fuel)) answer = 1 best_uncapable = 0 for i, dist in enumerate(distances): # Přidej letadla, která jsou schopna uletět trať. while best_uncapable < n and fuel[best_uncapable] >= dist: best_uncapable += 1 # Přenásob počet možností počtem nepoužitých letadel, která jsou schopná cestu uletět. answer *= (best_uncapable - i) # Vypiš zbytek po dělení 10^9 + 7. print(answer % mod)