#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100004;
using ll = long long;
vector<int>spf;
void spfA(){
	spf.resize(MAXN+1);
	
	for(int i = 2 ; i<=MAXN ;i++){
		spf[i]=i;
	}
	//spf[0]=spf[1]=1;
	for(int i = 2;i*i<=MAXN;i++ ){
		if(spf[i] == i){
			for(int j = i*i;j<=MAXN ;j+=i){
				if(spf[j]==j){
					spf[j]=i;
				}
			}
		}
	}
}

unordered_map<ll,ll>cl(ll v1){
	unordered_map<ll,ll>a2;
	
	while(v1!=1){
		ll d = spf[v1];
		a2[d]++;
		v1=v1/d;
	}
	return a2;
}
int main() {
    int n;
    cin>>n;
    
    vector<int>a(n);
    int count = 0;
    spfA();
    unordered_map<ll,ll>b2;
    for(int i = 0;i < n ;i++){
    	cin>>a[i];
    	ll gg = 1;
    	    unordered_map<ll,ll>a2 = cl(a[i]);
    	    for(auto it : a2){
    	    	if((it.second)%2 != 0){
    	    		gg = gg*(it.first);
    	    	}
    	    }
    	    count = count + b2[gg];
    	    b2[gg]++;
    }
    
cout<<count<<endl;
	return 0;
}