#include<fstream>
#include<iostream>
#include<vector>
#include <algorithm>
using namespace std;
ifstream fin("text.in");
ofstream fout("text.out");
struct coada
{
    int x,y;
};

coada c[10000];

int n,m,k,i,j,p,x,y,a[10000],t,d,s[10000],best[10000];

bool cmp(coada i,coada j)
{
    if(i.x==j.x)
    {
        return i.y>j.y;
    }
    return i.x<j.x;
}

void init()
{
    int i;
    for(i=1;i<=d;i++)
    {
        best[i]=1000000;
    }
}




int main()
{
    cin>>d>>n>>m;
    for(i=1;i<=n;i++)
    {
        cin>>a[i];
        s[a[i]]=1;
    }
    for(i=1;i<=d;i++)
    {
        s[i]+=s[i-1];
    }
    for(i=1;i<=m;i++)
    {
        cin>>x>>y;
        c[i].x=x;
        c[i].y=y;
    }

    /*for(i=1;i<=d;i++)
    {
        fout<<s[i]<<" ";
    }
    fout<<"\n";*/
    sort(c+1,c+m+1,cmp);
    for(i=1;i<=m;i++)
    {
        //fout<<c[i].x<<" "<<c[i].y<<"\n";
    }
    init();

    for(i=1;i<=d;i++)
    {
        if(s[i]==0)
        {
            best[i]=0;
        }
        else
        {
            if(s[i]==s[i-1])   best[i]=best[i-1];
            for(j=1;j<=m;j++)
            {
                if(c[j].y==i)
                {
                    best[i]=min(best[i],1+best[c[j].x-1]);
                }
            }
        }
        best[i-1]=min(best[i-1],best[i]);
    }

    /*for(i=1;i<=d;i++)
    {
        fout<<best[i]<<" ";
    }*/

    cout<<best[d]<<"\n";


}