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 C (GCC 9.2.1) (judge verdict: Accepted)

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<ctype.h>
typedef long long LL;
#define rep(i,n) for(LL i=0; i<(LL)(n); i++)

//qsort
int compare_int(const void *a, const void *b)
{
    return *(int*)a - *(int*)b;
}

//比較
int max(int a, int b){
	if (a>b) return a;
	else return b;
}

int min(int a,int b) {
	if(a>b) return b;
	else return a;
}


//main関数
int main(){
	int N;
	scanf("%d",&N);
	
	int A[N];
	int flag[1000010] = {0};
	rep( i , N ){
		scanf("%d",&A[i]);
		flag[ A[i] ] = 1;
	}
	qsort( A, N , sizeof(int), compare_int );
	rep(i,N-1){
		if( A[i] == A[i+1] ) {
			flag[A[i]] = 0;
		}	
	}
	int ans = 0;
	for( int i=0; i<N; i++ ){
		if( flag[A[i]] == 1 ){
			ans++;
		}
		int j=2;
		while( A[i]*j <= A[N-1] ){
			flag[ A[i] * j ] = 0;
			j++;
		}
	}
	
	printf("%d",ans);
}