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: Time Limit Exceeded)

object Main {
  def main(args: Array[String]): Unit = {
    import scala.io.StdIn.readLine
    val Array(datN) = readLine.split(" ").map(_.toInt)
    val datA = readLine.split(" ").map(_.toInt).sorted

    def removeMultiplied(res: Array[Int], i: Int, dat: Array[Int]): Array[Int] = {
      if (dat.isEmpty) res
      else {
        val res_ = if (dat.head % i != 0) res ++ Array(dat.head) else res
        removeMultiplied (res_, i, dat.tail)
      }
    }
    def countAns(res: Int, dat: Array[Int]): Int = {
      if (dat.isEmpty) res
      else {
        val res_ = if((dat.length >= 2) && (dat(0) == dat(1))) res else res + 1
        //countAns(res_, removeMultiplied(Array(), dat.head, dat.tail))
        countAns(res_, dat.tail.filter(a => a % dat.head != 0))
      }
    }
    val ans = countAns(0, datA)
    println(ans)
  }
}