#include <stdio.h>
#include <stdlib.h>
#include <string.h>


typedef struct
{
    int height;
    int connect;
    int* connctTarget;
}Info;



int main()
{
    int i, j, k, m;

    char str[1000];
    fgets(str, sizeof(str), stdin);

    char* temp;
    temp = strtok(str, " \n");
    // 展望台の数
    int TenbodaiNum = atoi(temp);

    Info* pInfo = (Info*)malloc(sizeof(Info) * TenbodaiNum);
    for (i = 0; i < TenbodaiNum;i++)
    {
        pInfo[i].connect = 0;
        pInfo[i].connctTarget = NULL;
    }



    // 道の数
    temp = strtok(NULL, " \n");
    int PathNum = atoi(temp);

    //高さの取得
    fgets(str, sizeof(str), stdin);
    int hoge = 0;
    temp = strtok(str, " \n");

    while (temp != NULL)
    {
        pInfo[hoge].height = atoi(temp);
        hoge++;
        temp = strtok(NULL, " \n");
    }

    //道情報取得
    for (i = 0;i < PathNum;i++)
    {
        int iPos1;
        int iPos2;

        fgets(str, sizeof(str), stdin);
        temp = strtok(str, " \n");
        iPos1 = atoi(temp);

        temp = strtok(NULL, " \n");
        iPos2 = atoi(temp);

        int same = 0;
        for (j = 0;j < pInfo[iPos1 - 1].connect;j++)
        {
            if (pInfo[iPos1 - 1].connctTarget[j] == iPos2 - 1)
            {
                same = 1;
                break;
            }

        }
        if (same == 1) continue;

        pInfo[iPos1 - 1].connect++;
        pInfo[iPos1 - 1].connctTarget = (int*)realloc(pInfo[iPos1 - 1].connctTarget, sizeof(int) * pInfo[iPos1 - 1].connect);
        pInfo[iPos1 - 1].connctTarget[pInfo[iPos1 - 1].connect - 1] = iPos2 - 1;

        pInfo[iPos2 - 1].connect++;
        pInfo[iPos2 - 1].connctTarget = (int*)realloc(pInfo[iPos2 - 1].connctTarget, sizeof(int) * pInfo[iPos2 - 1].connect);
        pInfo[iPos2 - 1].connctTarget[pInfo[iPos2 - 1].connect - 1] = iPos1 - 1;

    }

    // 判定
    int iGood = 1;   //1:Good
    int iGoodNum = 0;

    for (i = 0;i < TenbodaiNum;i++)
    {
        int selfHeight = pInfo[i].height;
        for (j = 0;j < pInfo[i].connect;j++)
        {
            if (selfHeight <= pInfo[pInfo[i].connctTarget[j] - 1].height)
            {
                iGood = 0;
                break;
            }
        }

        if (iGood == 1) iGoodNum++;
        iGood = 1;
    }



    printf("%d\n", iGoodNum);


    return 0;
}
