#include #include #include #include #include #include #include #include #include #include #define in cin #define out cout #define FOR(i, a, b) for(int i = a; i <= b; ++i) using namespace std; typedef long long ll; const int INF = 0x3f3f3f3f; const int Nmax = 2001; vector G[Nmax]; int a[Nmax],m[Nmax],s[Nmax]; int d[Nmax]; int main(){ #ifndef ONLINE_JUDGE ifstream in("test.in"); ofstream out("test.out"); #endif int N,M,D; in>>D>>N>>M; FOR(i,1,N) in>>a[i],m[a[i]]=1; FOR(i,1,D) s[i]=s[i-1]+m[i]; sort(a+1,a+N+1); FOR(i,1,M){ int x,y; in>>x>>y; if(s[y]-s[x-1]>0) G[x].push_back(y); } for(int i=1;i<=D;i++) d[i]=INF; int cur=0; for(int i=1;i<=D;i++){ cur=min(cur,d[i]); for(vector::iterator it=G[i].begin();it!=G[i].end();++it){ d[*it]=min(d[*it],cur+1); } if(m[i]) cur=d[i]; } out<