#include using namespace std; #include using mint = atcoder::modint998244353; struct C { mint real; mint imag; C() : real(0), imag(0) {} C(mint real, mint imag) : real(real), imag(imag) {} C operator+(const C &rhs) const { return C(real + rhs.real, imag + rhs.imag); } C operator-(const C &rhs) const { return C(real - rhs.real, imag - rhs.imag); } C operator*(const C &rhs) const { return C(real * rhs.real - imag * rhs.imag, real * rhs.imag + imag * rhs.real); } C operator/(const C &rhs) const { mint norm = rhs.real * rhs.real + rhs.imag * rhs.imag; mint real_ = real * rhs.real + imag * rhs.imag; mint imag_ = imag * rhs.real - real * rhs.imag; return C(real_ / norm, imag_ / norm); } C conj() const { return C(real, -imag); } }; // i != j |zi|^2 / |zj|^2 - (zi / zi*) (zj* / zj) int main() { int T; cin >> T; while (T--) { int N; cin >> N; C sum_of_l2; C sum_of_inv_of_l2; C sum_of_z_div_z_conj; C sum_of_z_conj_div_z; while (N--) { int x, y; cin >> x >> y; C z(x, y); sum_of_l2 = sum_of_l2 + z * z.conj(); sum_of_inv_of_l2 = sum_of_inv_of_l2 + C(1, 0) / (z * z.conj()); sum_of_z_div_z_conj = sum_of_z_div_z_conj + z / z.conj(); sum_of_z_conj_div_z = sum_of_z_conj_div_z + z.conj() / z; } cout << (sum_of_l2 * sum_of_inv_of_l2 - sum_of_z_div_z_conj * sum_of_z_conj_div_z).real.val() << '\n'; } }