#include <cstdio> #include <algorithm> #include <vector> using namespace std; #define maxn 100100 #define inf (1000000000) int d, n, m; int f[maxn]; int dp[maxn]; vector<int> v[maxn]; int main() { scanf("%d%d%d", &d, &n, &m); for(int i=1; i<=n; ++i) { int x; scanf("%d", &x); ++f[x]; } for(int i=1; i<=d; ++i) { dp[i]=inf; f[i]+=f[i-1]; } for(int i=1; i<=m; ++i) { int x, y; scanf("%d%d", &x, &y); v[x].push_back(y); } int sol=0, mxfar=-1, pt=1, mxc = -1; for(int i=1; i<=d; ++i) { if(f[i]==f[i-1]) dp[i]=min(dp[i], dp[i-1]); for(int j=0; j<v[i].size(); ++j) if(f[v[i][j]]!=f[i-1]) dp[v[i][j]]=min(dp[v[i][j]], dp[i-1]+1); } printf("%d\n", dp[d]); return 0; }