ll quick_mult(ll a, ll b, ll mod){ll ans =0;while(b){if(b &1) ans =(ans + a)% mod;a =(a + a)% mod;b >>=1;}return ans;}ll quick_pow(ll a, ll n, ll mod){ll ans =1;while(n){if(n &1) ans =quick_mult(ans, a, mod);a =quick_mult(a, a, mod);n >>=1;}return ans;}boolmiller_rabin(ll n){if(n ==2)returntrue;if(n <2||!(n &1))returnfalse;ll s =0, d = n -1;while(!(d &1)){d >>=1;s++;}srand(time(0));for(int i =1; i <=5; i++){ll a =rand()%(n -2)+2;ll now =quick_pow(a, d, n), pre = now;for(int j =1; j <= s; j++){now =quick_mult(now, now, n);if(now ==1&& pre !=1&& pre != n -1)returnfalse;pre = now;}if(now !=1)returnfalse;}returntrue;}