"use strict";

const main = arg => {
    const inputList = arg.trim().split("\n");
  // 回答を記述
  const N = parseInt(inputList[0].split(' ')[0]);
  const M = parseInt(inputList[0].split(' ')[1]);
  const observatorys = inputList[1].split(' ').map(ele => parseInt(ele));
  // 道のみのリストにする
  inputList.shift();
  inputList.shift();
  let roots = Array.from(new Set(inputList));
  let result = 0;

  for(let i = 1; i <= N; i++) {
    // i番目の展望台と繋がる展望台道の組み合わせを抽出
    let matchRoots = roots.filter(ele => i == parseInt(ele.split(" ")[0]) || i == parseInt(ele.split(" ")[1]));
    // i番目の展望台とつながる展望台の組み合わせ
    let trimMatchRoots = matchRoots.map(ele => ele.split(" ")).flatMap(ele => ele).filter(ele => parseInt(ele) != i);
    let isHigh = true;
    for(let j = 0; j < trimMatchRoots.length; j++) {
      if (observatorys[i - 1] <= observatorys[parseInt(trimMatchRoots[j]) -1]) {
        isHigh = false;
        break;
      }
    }
    if (isHigh) {
      result++;
    }
    
  }

  console.log(result);

}

main(require('fs').readFileSync('/dev/stdin', 'utf8'));