#include<bits/stdc++.h>
#define N 100100
using namespace std;
typedef long long LL;
int prime[2200],len;
int n,m,ans;
LL l[N],r[N];
map<LL,int> ma;
int main(){
for(int i=2;i<2200;i++){
int fla=1;
for(int j=2;j<i;j++)
if(i%j==0) fla=0;
if(fla) prime[len++]=i;
}
scanf("%d",&n);
for(int i=0;i<n;i++){
long long a,els=1,f=1;
scanf("%lld",&a);
for(int j=0;j<len;j++){
int t=0;
while(a%prime[j]==0) a/=prime[j],t++;
t%=3;
if(t){
for(int i=t;i<3;i++){
els*=prime[j];
if(els>1e10) els=0;
}
while(t) f*=prime[j],t--;
}
}
ma[f*a]++;
l[i]=f*a,r[i]=els;
long long w=(LL)sqrt(a);
if(w*w!=a){
if(a*r[i]<=1e10) r[i]*=a;
else r[i]=0;
if(a*r[i]<=1e10) r[i]*=a;
else r[i]=0;
}
else{
if(r[i]*w<=1e10) r[i]*=w;
else r[i]=0;
}
}
for(int i=0;i<n;i++){
if(l[i]==1) continue;
ans+=max(ma[l[i]],ma[r[i]]);
ma[l[i]]=ma[r[i]]=0;
}
ans+=(ma[1]>0);
printf("%d\n",ans);
return 0;
}