#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;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBNQVhOID0gMTAwMDA0Owp1c2luZyBsbCA9IGxvbmcgbG9uZzsKdmVjdG9yPGludD5zcGY7CnZvaWQgc3BmQSgpewoJc3BmLnJlc2l6ZShNQVhOKzEpOwoJCglmb3IoaW50IGkgPSAyIDsgaTw9TUFYTiA7aSsrKXsKCQlzcGZbaV09aTsKCX0KCS8vc3BmWzBdPXNwZlsxXT0xOwoJZm9yKGludCBpID0gMjtpKmk8PU1BWE47aSsrICl7CgkJaWYoc3BmW2ldID09IGkpewoJCQlmb3IoaW50IGogPSBpKmk7ajw9TUFYTiA7ais9aSl7CgkJCQlpZihzcGZbal09PWopewoJCQkJCXNwZltqXT1pOwoJCQkJfQoJCQl9CgkJfQoJfQp9Cgp1bm9yZGVyZWRfbWFwPGxsLGxsPmNsKGxsIHYxKXsKCXVub3JkZXJlZF9tYXA8bGwsbGw+YTI7CgkKCXdoaWxlKHYxIT0xKXsKCQlsbCBkID0gc3BmW3YxXTsKCQlhMltkXSsrOwoJCXYxPXYxL2Q7Cgl9CglyZXR1cm4gYTI7Cn0KaW50IG1haW4oKSB7CiAgICBpbnQgbjsKICAgIGNpbj4+bjsKICAgIAogICAgdmVjdG9yPGludD5hKG4pOwogICAgaW50IGNvdW50ID0gMDsKICAgIHNwZkEoKTsKICAgIHVub3JkZXJlZF9tYXA8bGwsbGw+YjI7CiAgICBmb3IoaW50IGkgPSAwO2kgPCBuIDtpKyspewogICAgCWNpbj4+YVtpXTsKICAgIAlsbCBnZyA9IDE7CiAgICAJICAgIHVub3JkZXJlZF9tYXA8bGwsbGw+YTIgPSBjbChhW2ldKTsKICAgIAkgICAgZm9yKGF1dG8gaXQgOiBhMil7CiAgICAJICAgIAlpZigoaXQuc2Vjb25kKSUyICE9IDApewogICAgCSAgICAJCWdnID0gZ2cqKGl0LmZpcnN0KTsKICAgIAkgICAgCX0KICAgIAkgICAgfQogICAgCSAgICBjb3VudCA9IGNvdW50ICsgYjJbZ2ddOwogICAgCSAgICBiMltnZ10rKzsKICAgIH0KICAgIApjb3V0PDxjb3VudDw8ZW5kbDsKCXJldHVybiAwOwp9