/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static int n = (int)1e6;
public static int[] smallestPrimeFact = new int[n + 1];
public static HashMap
<Integer, Integer
> function
(int vl
){ HashMap
<Integer, Integer
> map
= new HashMap
<>();
while(vl != 1){
int d = smallestPrimeFact[vl];
map.put(d, map.getOrDefault(d,0) + 1);
vl /= d;
}
return map;
}
{
// your code goes here
int N = 5;
int[] arr = {1, 36, 9, 4, 6};
for(int i = 2; i <= n; i++){
smallestPrimeFact[i] = i;
}
for(int i
= 2; i
<= Math.
sqrt(n
); i
++){ if(smallestPrimeFact[i] == i){
for(int j = i*i; j <= n; j += i){
if(smallestPrimeFact[j] == j){
smallestPrimeFact[j] = i;
}
}
}
}
HashMap
<Long, Long
> map
= new HashMap
<>();
for(int i = 0; i < N; i++){
HashMap
<Integer, Integer
> k
= function
(arr
[i
]);
long g = 1;
for(Map.
Entry<Integer, Integer
> en
: k.
entrySet()){ int key = en.getKey();
int freq = en.getValue();
if(freq % 2 != 0){
g *= key;
}
}
count += map.getOrDefault(g, 0L);
map.put(g, map.getOrDefault(g, 0L) + 1);
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgaW50IG4gPSAoaW50KTFlNjsKIAoJcHVibGljIHN0YXRpYyBpbnRbXSBzbWFsbGVzdFByaW1lRmFjdCA9IG5ldyBpbnRbbiArIDFdOwoJCglwdWJsaWMgc3RhdGljIEhhc2hNYXA8SW50ZWdlciwgSW50ZWdlcj4gZnVuY3Rpb24oaW50IHZsKXsKCQlIYXNoTWFwPEludGVnZXIsIEludGVnZXI+IG1hcCA9IG5ldyBIYXNoTWFwPD4oKTsKCQkKCQl3aGlsZSh2bCAhPSAxKXsKCQkJaW50IGQgPSBzbWFsbGVzdFByaW1lRmFjdFt2bF07CgkJCW1hcC5wdXQoZCwgbWFwLmdldE9yRGVmYXVsdChkLDApICsgMSk7CgkJCXZsIC89IGQ7CgkJfQoJCXJldHVybiBtYXA7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQlpbnQgTiA9IDU7CgkJaW50W10gYXJyID0gezEsIDM2LCA5LCA0LCA2fTsKCQkKCQlMb25nIGNvdW50ID0gMEw7CgkJCgkJZm9yKGludCBpID0gMjsgaSA8PSBuOyBpKyspewoJCQlzbWFsbGVzdFByaW1lRmFjdFtpXSA9IGk7CgkJfQogCgkJZm9yKGludCBpID0gMjsgaSA8PSBNYXRoLnNxcnQobik7IGkrKyl7CgkJCWlmKHNtYWxsZXN0UHJpbWVGYWN0W2ldID09IGkpewoJCQkJZm9yKGludCBqID0gaSppOyBqIDw9IG47IGogKz0gaSl7CgkJCQkJaWYoc21hbGxlc3RQcmltZUZhY3Rbal0gPT0gail7CgkJCQkJCXNtYWxsZXN0UHJpbWVGYWN0W2pdID0gaTsgCgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJCQoJCUhhc2hNYXA8TG9uZywgTG9uZz4gbWFwID0gbmV3IEhhc2hNYXA8PigpOwoJCQoJCWZvcihpbnQgaSA9IDA7IGkgPCBOOyBpKyspewoJCQlIYXNoTWFwPEludGVnZXIsIEludGVnZXI+IGsgPSBmdW5jdGlvbihhcnJbaV0pOwoJCQkKCQkJbG9uZyBnID0gMTsKCQkJCgkJCWZvcihNYXAuRW50cnk8SW50ZWdlciwgSW50ZWdlcj4gZW4gOiBrLmVudHJ5U2V0KCkpewoJCQkJaW50IGtleSA9IGVuLmdldEtleSgpOwoJCQkJaW50IGZyZXEgPSBlbi5nZXRWYWx1ZSgpOwoJCQkJCgkJCQlpZihmcmVxICUgMiAhPSAwKXsKCQkJCQlnICo9IGtleTsKCQkJCX0KCQkJfQoJCQkKCQkJY291bnQgKz0gbWFwLmdldE9yRGVmYXVsdChnLCAwTCk7CgkJCW1hcC5wdXQoZywgbWFwLmdldE9yRGVmYXVsdChnLCAwTCkgKyAxKTsKCQl9CgkJU3lzdGVtLm91dC5wcmludGxuKGNvdW50KTsKCX0KfQ==