Problem:
Score : 1100 points

Problem Statement

Snuke got positive integers s_1,...,s_N from his mother, as a birthday present. There may be duplicate elements.

He will circle some of these N integers. Since he dislikes cubic numbers, he wants to ensure that if both s_i and s_j (i ≠ j) are circled, the product s_is_j is not cubic. For example, when s_1=1,s_2=1,s_3=2,s_4=4, it is not possible to circle both s_1 and s_2 at the same time. It is not possible to circle both s_3 and s_4 at the same time, either.

Find the maximum number of integers that Snuke can circle.

Constraints

1 ≦ N ≦ 10^5

1 ≦ s_i ≦ 10^{10}

All input values are integers.

Input

The input is given from Standard Input in the following format:

N
s_1
:
s_N

Output

Print the maximum number of integers that Snuke can circle.

Sample Input 1

8
1
2
3
4
5
6
7
8

Sample Output 1

6

Snuke can circle 1,2,3,5,6,7.

Sample Input 2

6
2
4
8
16
32
64

Sample Output 2

3

Sample Input 3

10
1
10
100
1000000007
10000000000
1000000009
999999999
999
999
999

Sample Output 3

9

Solution in Ruby (2.3.3) (judge verdict: Wrong Answer)

#!/usr/bin/ruby
require 'prime'
P=Prime.each(2155).map{|x|x**3}
SQ={}
(1..10**5).each{|i|SQ[i*i]=1}
p SQ
h=Hash.new(0)
gets
$<.each{|_|
	n=_.to_i
	P.each{|x|break if n<x;n/=x while n%x==0}
	h[n]+=1
}
visit={}
r=[1,h[1]].min
visit[1]=1
h.sort.each{|k,v|
	next if visit[k]
	n=k*k
	P.each{|x|break if n<x;n/=x while n%x==0}# if SQ[k]
	if !SQ[k]
		raise if n!=k*k
	end
	v=h[n] if v<h[n]
	r+=v
	visit[n]=1
}
p r