/*方針
悪い展望台の番号を選ぶ
展望台の番号は0~N-1とする(インデックスにそのまま使えるようにするため)

Aj＜Bjであるとき、その時点でAjは絶対に良い展望台にはなり得ない、よって悪い展望台
その逆もまた同様
Aj==Bjであるとき、その時点でAjもBjも悪い展望台
悪い展望台の番号を配列に追加していく

最後にすべての展望台の数から悪い展望台の数を引くと、良い展望台の数が出てくる
*/
import Foundation
let nm = readLine()!.split(separator:" ").map{Int($0)!}
let hill = readLine()!.split(separator:" ").map{Int($0)!}
var ans: Set<Int> = []
for _ in 1...nm[1]{
  let ab = readLine()!.split(separator:" ").map{Int($0)!}
  if hill[ab[0]-1] < hill[ab[1]-1]{
    ans.insert(ab[0]-1)
  }
  else if hill[ab[0]-1] > hill[ab[1]-1]{
    ans.insert(ab[1]-1)
  }
  else{
    ans.insert(ab[0]-1)
    ans.insert(ab[1]-1)
  }
}
print(nm[0]-ans.count)