#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; using namespace atcoder; typedef long long ll; typedef pair P; const int MAX=100010; bitset isprime; void sieve(){ for(int i=3; i>=1; } return ans; } ll modsqrt(int p, int a){ //存在しないとき-1 if(a==0) return 0; int q=p-1, s=0; while((q&1)==0){ q>>=1; s++; } int z=2; while(1){ if(powmod(z, (p-1)/2, p)==p-1) break; z++; } ll c=powmod(z, q, p); ll r=powmod(a, (q+1)/2, p), t=powmod(a, q, p); int m=s; while(t>1){ ll tp=t; int k=-1; for(int i=1; i f[100010]; int main() { sieve(); for(ll i=1; i<=100001; i++){ v[i]=i*i+1; } for(int i=2; i<=100001; i++){ if(!isprime[i] || i%4==3) continue; if(i==2){ for(int j=1; j<=100001; j+=2){ while(v[j]%2==0){ v[j]>>=1; f[j].push_back(2); } } continue; } ll r=modsqrt(i, i-1); for(int j=r; j<=100001; j+=i){ while(v[j]%i==0){ v[j]/=i; f[j].push_back(i); } } r=i-r; for(int j=r; j<=100001; j+=i){ while(v[j]%i==0){ v[j]/=i; f[j].push_back(i); } } } for(int i=1; i<=100001; i++) if(v[i]>1) f[i].push_back(v[i]); int q; cin>>q; for(int i=0; i>x; for(auto p:f[x]) cout<