static BigInteger ModInverse(BigInteger k, BigInteger m) { var m2 = m - 2; if (k < 0) { k = k + m; } return BigInteger.ModPow(k, m2, m); }