#include <bits/stdc++.h>
#define int long long
#define el '\n'
#define oo LLONG_MAX >> 2
#define all(x) x.begin(), x.end()
#define allr(x) x.rbegin(), x.rend()
#define pb push_back
#define pep_Guardiola \
ios::sync_with_stdio(0); \
cin.tie(0); \
cout.tie(0);
using namespace std;
const int N = 1e6 + 7;
int spf[N];
signed main() {
pep_Guardiola;
for (int i = 2; i < N; i++) {
if (!spf[i]) {
spf[i] = i;
for (int j = i * i; j < N; j += i)
if (!spf[j])
spf[j] = i;
}
}
int n;
cin >> n;
map<int, int> mp;
int ans = 0;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
int cur = 1;
while (spf[x]) {
int p = spf[x];
bool odd = 0;
while (x % p == 0)
x /= p, odd ^= 1;
cur *= (odd ? p : 1);
}
cur *= x;
ans += mp[cur]++;
}
cout << ans << el;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGVsICdcbicKI2RlZmluZSBvbyBMTE9OR19NQVggPj4gMgojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCksIHguZW5kKCkKI2RlZmluZSBhbGxyKHgpIHgucmJlZ2luKCksIHgucmVuZCgpCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGVwX0d1YXJkaW9sYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgY2luLnRpZSgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgY291dC50aWUoMCk7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBOID0gMWU2ICsgNzsKaW50IHNwZltOXTsKc2lnbmVkIG1haW4oKSB7CiAgcGVwX0d1YXJkaW9sYTsKICBmb3IgKGludCBpID0gMjsgaSA8IE47IGkrKykgewogICAgaWYgKCFzcGZbaV0pIHsKICAgICAgc3BmW2ldID0gaTsKICAgICAgZm9yIChpbnQgaiA9IGkgKiBpOyBqIDwgTjsgaiArPSBpKQogICAgICAgIGlmICghc3BmW2pdKQogICAgICAgICAgc3BmW2pdID0gaTsKICAgIH0KICB9CiAgaW50IG47CiAgY2luID4+IG47CiAgbWFwPGludCwgaW50PiBtcDsKICBpbnQgYW5zID0gMDsKICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgaW50IHg7CiAgICBjaW4gPj4geDsKICAgIGludCBjdXIgPSAxOwogICAgd2hpbGUgKHNwZlt4XSkgewogICAgICBpbnQgcCA9IHNwZlt4XTsKICAgICAgYm9vbCBvZGQgPSAwOwogICAgICB3aGlsZSAoeCAlIHAgPT0gMCkKICAgICAgICB4IC89IHAsIG9kZCBePSAxOwogICAgICBjdXIgKj0gKG9kZCA/IHAgOiAxKTsKICAgIH0KICAgIGN1ciAqPSB4OwogICAgYW5zICs9IG1wW2N1cl0rKzsKICB9CiAgY291dCA8PCBhbnMgPDwgZWw7Cn0K