#include <bits/stdc++.h>

using namespace std;

# define pb push_back
# define mp make_pair
# define FORN( a , b , c ) for ( int a = b ; a <= c ; ++ a )
# define FORNBACK( a , b , c ) for ( int a = b ; a >= c ; -- a )

pair < int , int > p [ 1014 ] ;

long long dp [ 1014 ] [ 1014 ] ;
int viz [ 1014 ] ;
long long sp [ 1014 ] ;

vector < int > inter [ 1014 ] ;

int main()
{
    ios :: sync_with_stdio ( false ) ;

   // freopen( "input" , "r" , stdin ) ;
    //freopen( "output" , "w" , stdout ) ;
    int d , n , m ;
    cin >> d >> n >> m ;
    FORN ( i , 1 , n ) {
        int x ;
        cin >> x;
        viz [ x ] = 1 ;
    }
    FORN ( i , 1 , m ) {
        cin >> p [ i ].first >> p [ i ].second ;
        if ( p [ i ].first > p [ i ].second )
            swap ( p [ i ].first , p [ i ].second ) ;
        inter [ p [ i ].second ].pb ( p [ i ].first ) ;
    }
    FORN ( i , 1 , d )
    {
        sp [ i ] = sp [ i - 1 ] ;
        if ( viz [ i ] ) ++ sp [ i ];
    }
    FORN ( i , 1 , d )
        FORN ( j , 0 , n )
            dp [ i ] [ j ] = 1 << 30 ;
    FORN ( i , 0 , d )
    {
        dp [ i ] [ 0 ] = 0 ;
    }
    FORN ( i , 1 , d )
    {
        for ( auto x : inter [ i ] )
            dp [ i ] [ sp [ i ] ] = min ( dp [ i ] [ sp [ i ] ] , dp [ x - 1 ] [ sp [ x - 1 ] ] + 1 ) ;
        if ( !viz [ i ] )
            FORN ( j , 0 , i )
                dp [ i ] [ j ] = min ( dp [ i - 1 ] [ j ] , dp [ i ] [ j ] ) ;
    }
    long long minim = 1 << 30 ;
    FORNBACK ( i , d , 1 ){
        minim = min ( minim , dp [ i ] [ n ] ) ;
        if ( viz [ i ] ) break ;
    }
    cout << minim ;
    return 0 ;
}