rt.
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
int a[100005],cnt[325];
bool vis[100005];
int main() {
int n,k; scanf("%d%d",&n,&k);
for (int i = 1; i <= n; i++) {
memset(cnt,0,sizeof cnt);
int x; scanf("%d",&x); int y = x;
for (int j = 2; j*j <= y; j++) {
while(x%j == 0) {
cnt[j]++;
x /= j;
}
cnt[j] %= k;
}
if (x > 320) continue;
else if (x > 1) cnt[x]++;
x = 1;
for (int j = 2; j <= 320; j++) while(cnt[j]--) x *= j;
a[x]++;
}
ll ans = 0;
for (int i = 1; i <= 100005; i++) {
if (!a[i] || vis[i]) continue;
memset(cnt,0,sizeof cnt);
int x = i;
for (int j = 2; j*j <= i; j++) {
while(x%j == 0) {
cnt[j]++;
x /= j;
}
cnt[j] %= k;
cnt[j] = k-cnt[j];
cnt[j] %= k;
}
if (x > 1 && x <= 320) cnt[x] = k-1;
x = 1;
for (int j = 2; j <= 320; j++) while(cnt[j]--) x *= j;
if (x > 1e5 || !a[x] || vis[x]) continue;
if (i == x) ans += 1ll*a[i]*(a[x]-1)/2;
else ans += 1ll*a[i]*a[x];
vis[i] = vis[x] = 1;
}
printf("%lld\n",ans);
return 0;
}