#include <iostream>
#include <algorithm>
#include <vector>
#define INF 1000000
using namespace std;
int d,n,m,inc,sf,mmin,a[1004],p1,p2;
struct myS{int inc,nr;} aux;
vector<myS> v[1004];
int mat[1004][1004];
int main()
{
    cin>>d>>n>>m;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    sort(a+1,a+n+1);
    for(int i=1;i<=m;i++)
    {
        cin>>inc>>sf;
        for(p1=1;p1<=n;p1++)
            if(a[p1] >= inc)
                break;
        for(p2=p1-1;p2<=n;p2++)
            if(a[p2] >= sf)
                break;
        aux.inc = inc; aux.nr = max(p2-p1+1,0);
        v[sf].push_back(aux);
    }
    inc = 1;
    for(int i=1;i<=n;i++)
        for(int j=0;j<=d;j++)
            mat[i][j] = INF;
    a[n+1] = d+1;
    for(int i=1;i<=n;i++)
    {
        for(int day = a[i];day<a[i+1];day++)
        {
            mmin = INF;
            for(int j=0;j<v[day].size();j++)
                if(mat[i-v[day][j].nr][v[day][j].inc-1] <= mmin)
                    mmin = mat[i-v[day][j].nr][v[day][j].inc-1];
            mmin = mmin + 1 < mat[i][day-1] ? mmin + 1 : mat[i][day-1];
            mat[i][day] = mmin;
        }
    }
    cout<<mat[n][d];
    return 0;
}