long long RSA::decrypt(long long msg){
long long p = config.p;
long long q = config.q;
long long d = config.d;
long long x, y, h, qinv;
x = modexp(msg, d % (p-1), p);
y = modexp(msg, d % (q-1), q);
/*inverse(q, p, qinv);
h = ((x - y)*qinv) % p;
return y + h*q;*/
long long n1, n2;
inverse(q, p, n1);
inverse(p, q, n2);
return (x*n1*q + y*n2*p) % (p*q);
}