#include #include using namespace std; vector isprime; vector sieve(int n){ vector prime; isprime=vector(n+1,true); isprime[1]=false; for (int i=2;i<=n;i++){ if (!isprime[i]) continue; prime.push_back(i); for (int j=i*2;j<=n;j+=i){ isprime[j]=false; } } return prime; } template struct Matrix{ array,N> val; Matrix(){ for (int i=0;i &operator[](int i){return val[i];} const array &operator[](int i)const{return val[i];} Matrix operator*(const Matrix &b){ Matrix a=*this,c; for (int i=0;i0){ if (k%2==1) ret=ret*m; m=m*m; k/=2; } return ret; } }; using mint=atcoder::modint998244353; using mat=Matrix; int k=1e7+10; vector sump(k+1); vector sum(k+1); void solve(){ int n,m; cin>>n>>m; if (n==1){ int ans=sump[m]+1; cout<(i^2)&&isprime[i]&&isprime[i^2]) sum[i]+=2; sum[i+1]+=sum[i]; sump[i+1]=sump[i]+isprime[i]; } int t; cin>>t; while (t--) solve(); }