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)

let n = Scanf.scanf "%d\n" (fun i -> i)
let a = Array.init n (fun _ -> Scanf.scanf " %d" (fun i -> i))

let m = Array.fold_left max 1 a + 1

let b1 = Array.make m false
let b2 = Array.make m false


let rec f i =
  if i < n then (
    let ai = a.(i) in
    if not b1.(ai) then (
        if b2.(ai) then
          b1.(ai) <- true
        else (
          let rec g j =
            let x = ai * j in
            if x < m then (
                b1.(x) <- true;
                g (j + 1)
            ) in
          g 2;
          b2.(ai) <- true
        )
    );
    f (i + 1)
  )

let rec g i ans =
  if i = n then ans
  else if b1.(a.(i)) then g (i + 1) ans
  else g (i + 1) (ans + 1)

let () = f 0; Printf.printf "%d\n" (g 0 0)