#include 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 ; }