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: Accepted)

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 =
            let check c =
                if hist.(c) = 0 then true else
                    if v <> c then false else
                        if hist.(c) = 1 then true else false
            in
            if j * j > v then acc else
                if v mod j <> 0 then loop_j v (j + 1) acc else
                if check j && check (v / j) 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"
)