#include #include using namespace std; using namespace atcoder; #ifdef DEBUG #include "debug.h" #define dump(...) \ DUMPOUT << " " << string(#__VA_ARGS__) << ": " \ << "[" << to_string(__LINE__) << ":" << __FUNCTION__ << "]" \ << endl \ << " ", \ dump_func(__VA_ARGS__) #else #define dump(...) #endif template vector make_v(size_t a){return vector(a);} template auto make_v(size_t a,Ts... ts){ return vector(ts...))>(a,make_v(ts...)); } template typename enable_if::value==0>::type fill_v(T &t,const V &v){t=v;} template typename enable_if::value!=0>::type fill_v(T &t,const V &v){ for(auto &e:t) fill_v(e,v); } //#define int long long #define rep(i,n) for(int i=0, i##_len=(n); i bool chmax(T &a, const T &b) { if (a bool chmin(T &a, const T &b) { if (a>b) { a=b; return 1; } return 0; } //* #define mod 1000000007 /*/ #define mod 998244353 //*/ typedef pair P; #define INF (1LL<<60) bool isprime(int n){ if (n < 2) return false; if (n == 2) return true; for (int i = 2; i*i <= n; i++) if (n % i == 0) return false; return true; } using ll = long long; // x^k mod m long long modpow( ll x, ll k, ll m ){ ll ret = 1; while(k > 0){ if( ret % 2 == 1){ ret = ((__uint128_t)ret * x) % m; } k /= 2; x = ((__uint128_t)x * x) % m; } return ret; } bool miller_rabin_primality_test(ll N){ if(N<2) return false; if(N==2) return true; else if(N%2==0) return false; auto test = [&](int a){ ll t = N-1, s=0; while(t % 2 == 0){ t /= 2; s++; } ll r = modpow(a, t, N); if(r==1 || r==N-1) return true; for(int i=0; i witness; if(N < (1LL<<32)) witness = {2, 7, 61}; else witness = {2, 325, 9375, 28178, 450775, 9780504, 1795265022}; for(int a : witness){ int g = gcd(a,N); if(1> N; while(N--){ long long x; cin >> x; cout << x << " " << miller_rabin_primality_test(x) << endl; } } signed main(){ cout << fixed << setprecision(18); cerr << fixed; solve(); }