#include <iostream>
#include <fstream>
#include <algorithm>
#include <math.h>
#include <string>
#include <vector>
#include <stdio.h>
#include <queue>
#include <set>
#include <map>

#define LL long long
#define pb push_back
#define lm 1010
#define mk make_pair
#define MOD 1000000007

using namespace std;

int n,m,d,x,y;
int dp[lm];
vector<int> l[lm];
bool v[lm];
int main(){

    //freopen("data.txt","r",stdin);
    scanf("%d%d%d",&d,&n,&m);
    for(int i=0; i<n; i++)
    {
        scanf("%d",&x);
        v[x]=1;
    }
    for(int i=0; i<m; i++)
    {
        scanf("%d%d",&x,&y);
        l[x].pb(y);
    }

    fill_n(dp,lm,10000);
    dp[d+1]=0;
    for(int j=d; j>0; j--)
    {
        if(!v[j])
            dp[j]=min(dp[j],dp[j+1]);
        for(int i=0; i<l[j].size(); i++)
        {
            dp[j]=min(dp[j],dp[l[j][i]+1]+1);
        }
        //cout<<dp[j]<<' ';
    }
    cout<<dp[1];

}