int64_t modPow(int64_t a, int64_t x) { int64_t res = 1; while(x > 0) { if( x % 2 != 0) { res = ModM(res * a); } a = ModM(a*a); //right here x /= 2; } return res; }