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 Rust (1.42.0) (judge verdict: Runtime Error)

use std::io::*;
use std::str::FromStr;

//https://qiita.com/tubo28/items/e6076e9040da57368845
fn read<T: FromStr>() -> T {
    let stdin = stdin();
    let stdin = stdin.lock();
    let token: String = stdin
        .bytes()
        .map(|c| c.expect("failed to read char") as char)
        .skip_while(|c| c.is_whitespace())
        .take_while(|c| !c.is_whitespace())
        .collect();
    token.parse().ok().expect("failed to parse token")
}

fn main() {
    let n:usize = read();
    let mut a: Vec<usize> = (0..n).map(|_| read()).collect();
    a.sort();

    let mut not_divisible = vec![true;1_000_000 + 1];

    for i in 0..n{
        if not_divisible[a[i]] {
            for j in (a[i]*2..1_000_000 + 1).step_by(a[i]){
                not_divisible[j] = false;
            }
        }
    }

    let mut ans = 0;
    a.push(0);
    for i in 0..n{
        if i == n-1{
            if not_divisible[a[i]] && a[i] != a[i-1]{
                ans += 1;
            }
        }else if not_divisible[a[i]] && a[i] != a[i+1]{
            ans += 1;
        }
    }

    println!("{}",ans);
}