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