Problem:
Score : 400 points

Problem Statement

Given is a number sequence A of length N.

Find the number of integers i \left(1 \leq i \leq N\right) with the following property:

For every integer j \left(1 \leq j \leq N\right) such that i \neq j , A_j does not divide A_i.

Constraints

All values in input are integers.

1 \leq N \leq 2 \times 10^5

1 \leq A_i \leq 10^6

Input

Input is given from Standard Input in the following format:

N
A_1 A_2 \cdots A_N

Output

Print the answer.

Sample Input 1

5
24 11 8 3 16

Sample Output 1

3

The integers with the property are 2, 3, and 4.

Sample Input 2

4
5 5 5 5

Sample Output 2

0

Note that there can be multiple equal numbers.

Sample Input 3

10
33 18 45 28 8 19 89 86 2 4

Sample Output 3

5

Solution in OCaml (4.10.0) (judge verdict: Wrong Answer)

Scanf.scanf "%d" (fun n ->
    let a = Array.init n (fun _ -> Scanf.scanf " %d" (fun a -> a)) in
    Array.sort compare a;
    let hist = Array.make 1000001 0 in
    Array.iter (fun v -> hist.(v) <- hist.(v) + 1) a;
    let rec loop_i i acc =
        let rec loop_j v j acc =
            if j * j > v then acc else
                if v mod j <> 0 then loop_j v (j + 1) acc else (
                    let j1 = j in
                    let j2 = v / j in
                    if v = j1 && hist.(j1) > 1 then acc - 1 else
                    if v = j2 && hist.(j2) > 1 then acc - 1 else
                    if v = j1 && hist.(j1) = 1 ||
                       v = j2 && hist.(j2) = 1 ||
                       hist.(j1) = 0 && hist.(j2) = 0 then loop_j v (j + 1) acc
                    else acc - 1
                )
        in
        if i = n then acc else
            loop_i (i + 1) (loop_j a.(i) 1 acc)
    in
    loop_i 0 n |> Printf.printf "%d\n"
)