#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll n, a[300010], nt[1000100];
map<ll, ll>mp;
void sang()
{
nt[1] = 1;
for (int i=2; i<=1000; i++) if (!nt[i])
{
for (int j=i*i; j<=1000000; j+=i) nt[j] = i;
}
for (int i=1; i<=1000000; i++) if (!nt[i]) nt[i] = i;
}
int main()
{
cin >> n;
sang();
for (int i=1; i<=n; i++) cin >> a[i];
for (int i=1; i<=n; i++)
{
vector<ll>vec;
ll tmp = a[i];
while (a[i] > 1)
{
if (vec.empty() || nt[a[i]] != vec.back()) vec.push_back(nt[a[i]]);
a[i] /= nt[a[i]];
}
// if (vec.empty() || nt[a[i]] != vec.back()) vec.push_back(nt[a[i]]);
for (ll v : vec) while (tmp % (v*v) == 0) tmp /= v*v;
a[i] = tmp;
}
for (int i=1; i<=n; i++) mp[a[i]]++;
ll ret = 0;
for (int i=1; i<=n; i++) if (mp[a[i]])
{
ret += mp[a[i]]*(mp[a[i]]-1) / 2;
mp[a[i]] = 0;
}
cout << ret;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbGwgbiwgYVszMDAwMTBdLCBudFsxMDAwMTAwXTsKbWFwPGxsLCBsbD5tcDsKCnZvaWQgc2FuZygpCnsKICAgIG50WzFdID0gMTsKICAgIGZvciAoaW50IGk9MjsgaTw9MTAwMDsgaSsrKSBpZiAoIW50W2ldKQogICAgewogICAgICAgIGZvciAoaW50IGo9aSppOyBqPD0xMDAwMDAwOyBqKz1pKSBudFtqXSA9IGk7CiAgICB9CiAgICBmb3IgKGludCBpPTE7IGk8PTEwMDAwMDA7IGkrKykgaWYgKCFudFtpXSkgbnRbaV0gPSBpOwp9CgppbnQgbWFpbigpCnsKICAgIGNpbiA+PiBuOwogICAgc2FuZygpOwogICAgZm9yIChpbnQgaT0xOyBpPD1uOyBpKyspIGNpbiA+PiBhW2ldOwogICAgZm9yIChpbnQgaT0xOyBpPD1uOyBpKyspCiAgICB7CiAgICAgICAgdmVjdG9yPGxsPnZlYzsKICAgICAgICBsbCB0bXAgPSBhW2ldOwogICAgICAgIHdoaWxlIChhW2ldID4gMSkKICAgICAgICB7CiAgICAgICAgICAgIGlmICh2ZWMuZW1wdHkoKSB8fCBudFthW2ldXSAhPSB2ZWMuYmFjaygpKSB2ZWMucHVzaF9iYWNrKG50W2FbaV1dKTsKICAgICAgICAgICAgYVtpXSAvPSBudFthW2ldXTsKICAgICAgICB9CiAgICAgICAgLy8gaWYgKHZlYy5lbXB0eSgpIHx8IG50W2FbaV1dICE9IHZlYy5iYWNrKCkpIHZlYy5wdXNoX2JhY2sobnRbYVtpXV0pOwogICAgICAgIGZvciAobGwgdiA6IHZlYykgd2hpbGUgKHRtcCAlICh2KnYpID09IDApIHRtcCAvPSB2KnY7CiAgICAgICAgYVtpXSA9IHRtcDsKICAgIH0KICAgIGZvciAoaW50IGk9MTsgaTw9bjsgaSsrKSBtcFthW2ldXSsrOwogICAgbGwgcmV0ID0gMDsKICAgIGZvciAoaW50IGk9MTsgaTw9bjsgaSsrKSBpZiAobXBbYVtpXV0pCiAgICB7CiAgICAgICAgcmV0ICs9IG1wW2FbaV1dKihtcFthW2ldXS0xKSAvIDI7CiAgICAgICAgbXBbYVtpXV0gPSAwOwogICAgfQogICAgY291dCA8PCByZXQ7Cn0=