#include"../../template.h"
#include"Binary_exponentiation.h"booltest(lla,lln,llk,llm){llmod=binPow(a,m,n);if(mod==1||mod==n-1)returntrue;for(intl=1;l<k;l++){mod=(u128)mod*mod%n;if(mod==n-1)returntrue;}returnfalse;}// Miller rabinboolMillerRabin0(lln){if(n==2)returntrue;if(n<2||n%2==0)returnfalse;llk=0,m=n-1;while(m%2==0){m/=2;k++;}for(inti=0;i<5;i++){lla=rand()%(n-3)+2;if(!test(a,n,k,m))returnfalse;}returntrue;}// Miller Rabin deterministic versionboolMillerRabin(lln){if(n<=1)returnfalse;llk=0,m=n-1;while(m%2==0){m/=2;k++;}for(inta:{2,3,5,7,11,13,17,19,23,29,31,37}){if(n==a)returntrue;if(!test(a,n,k,m))returnfalse;}returntrue;}
#line 2 "template.h"
#include<bits/stdc++.h>usingnamespacestd;#define ll long long
#define MOD (ll)(1e9+7)
#define all(x) (x).begin(),(x).end()
#define unique(x) x.erase(unique(all(x)), x.end())
#define INF32 ((1ull<<31)-1)
#define INF64 ((1ull<<63)-1)
#define inf (ll)1e18
#define vi vector<int>
#define pii pair<int, int>
#define pll pair<ll, ll>
#define fi first
#define se second
constintmod=998244353;voidsolve();intmain(){ios_base::sync_with_stdio(false);cin.tie(NULL);// cin.exceptions(cin.failbit);// int t; cin >> t;// while(t--)solve();cerr<<"\nTime run: "<<1000*clock()/CLOCKS_PER_SEC<<"ms"<<'\n';return0;}#line 2 "NumberTheory/Math/Binary_exponentiation.h"
usingu128=__uint128_t;llbinMul(lla,llb,llM){a=a%M;llres=0;while(b){if(b&1)res=(res+a)%M;a=a*2%M;b/=2;}returnres;}llbinPow(lla,llb,llM){a%=M;llres=1;while(b){if(b&1)res=(u128)res*a%M;a=(u128)a*a%M;b/=2;}returnres;}#line 3 "NumberTheory/Math/MillerRabin.h"
booltest(lla,lln,llk,llm){llmod=binPow(a,m,n);if(mod==1||mod==n-1)returntrue;for(intl=1;l<k;l++){mod=(u128)mod*mod%n;if(mod==n-1)returntrue;}returnfalse;}// Miller rabinboolMillerRabin0(lln){if(n==2)returntrue;if(n<2||n%2==0)returnfalse;llk=0,m=n-1;while(m%2==0){m/=2;k++;}for(inti=0;i<5;i++){lla=rand()%(n-3)+2;if(!test(a,n,k,m))returnfalse;}returntrue;}// Miller Rabin deterministic versionboolMillerRabin(lln){if(n<=1)returnfalse;llk=0,m=n-1;while(m%2==0){m/=2;k++;}for(inta:{2,3,5,7,11,13,17,19,23,29,31,37}){if(n==a)returntrue;if(!test(a,n,k,m))returnfalse;}returntrue;}