#include #include typedef long long ll; typedef unsigned long long ull; #define clr(ma) memset(ma,-1,sizeof ma) #define INF 1000000000 #define vi vector #define pi pair #define mk make_pair #define getBit(m,i) ((m&(1ll<::iterator #define itr2 set::iterator #define id(k) scanf("%9lf",&k) #define fi(ss) freopen (ss,"r",stdin) #define fo(ss) freopen (ss,"w",stdout) #define sc(s) scanf("%s",s) #define clean(vis) memset(vis,0,sizeof vis) #define bitcount(x) (__builtin_popcount(x)) #define rep0(x) for(int i=0;i > f; unordered_map dp; void factors (ll n){ if (f.count(n)) return; f[n]=vector (); vector & v=f[n]; ll g=n; for (ll i=2;i*i<=n;i++){ if (g%i==0){ v.push_back(i); while (g%i==0)g/=i; } } if (g>1)v.push_back(g); } ll solve (ll n){ if (n==1) return 1; if (dp.count(n))return dp[n]; dp[n]=0; ll & res=dp[n]; factors(n); int mx=0; vector & v = f[n]; ll it = v.back(); // for (auto it : v){ // if (it==1)continue; //cout<