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 Scala (2.13.1) (judge verdict: Wrong Answer)

import java.util.Scanner

import scala.collection.mutable
import scala.collection.mutable.ArrayBuffer

object Main {

  def main(args: Array[String]): Unit = {
    val sc = new Scanner(System.in)

    val n = sc.nextInt()
    val a = Array.fill(n)(sc.nextInt())
    val aset = a.toSet

    if (aset.contains(1)) {
      println(0)
    } else {
      var cnt = 0
      aset.foreach { i =>
        val idiv = divisors(i)
        if (!idiv.exists(aset.contains)) cnt += 1
      }

      val arr = ArrayBuffer.fill(1000005)(0)
      a.foreach { i =>
        val k = arr(i - 1)
        if (k == 1) {
          cnt -= 1
          arr(i - 1) += 1
        } else {
          arr(i - 1) += 1
        }
      }

      println(cnt)

    }
  }

  def divisors(n: Int): ArrayBuffer[Int] = {
    val ld = mutable.ArrayBuffer.empty[Int]
    val ud = mutable.ArrayBuffer.empty[Int]
    var i = 2
    while (i * i <= n) {
      if (n % i == 0) {
        ld += i
        if (i != n / i) {
          ud += n / i
        }
      }
      i += 1
    }
    ld ++ ud
  }


}