1function crt(remainders, moduli) {
2 const M = moduli.reduce((a, b) => a * b, 1);
3 let x = 0;
4 for (let i = 0; i < moduli.length; i++) {
5 const Mi = M / moduli[i];
6 const inv = modInverse(Mi, moduli[i]);
7 x += remainders[i] * Mi * inv;
8 }
9 return ((x % M) + M) % M;
10}