#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int n, m,i,j, d, dmin=1005, v[1005];
struct pereche {int x; int y; int beg; int en; int nr;};
pereche c[1005];
bool cmp(const pereche &a, const pereche &b)
{   if(a.x==b.x)
        return a.y<=b.y;
    return a.x<=b.x;
}
int cautare_binara(int x, int y, int a[], int n)
{   int pi=1, pf=n, mij;
    while(pi<=pf)
    {   mij=(pi+pf)/2;
        if (x>=a[mij])
            return mij;
        else
            if (x<=a[mij])
                pf=mij-1;
            else
                pi=mij+1;
    }
    return mij;
}
int main()
{   cin>>d>>n>>m;
    for(i=1;i<=n;i++)
        cin>>v[i];
    for(i=1;i<=m;i++)
    {   cin>>c[i].x>>c[i].y;
        c[i].beg=1005;
        c[i].nr=1;
    }
    sort(v+1,v+n+1);
    sort(c+1,c+m+1, cmp);
    for(i=1;i<=n;i++)
    {   for(j=1;j<=m;j++)
            if(c[j].x<=v[i] && v[i]<=c[j].y)
            {   c[j].beg=min(c[j].beg, i);
                c[j].en=max(c[j].en,i);
            }
    }
    /*for(i=1;i<=m;i++)
        cout<<c[i].x<<' '<<c[i].y<<' '<<c[i].beg<<' '<<c[i].en<<endl;*/
    for(i=1;i<m;i++)
    {   if(c[i].beg==1)
        {   for(j=i+1;j<=m;j++)
            {   if(c[j].beg==c[i].en+1)
                {   c[i].en=c[j].en;
                    c[i].nr++;
                }
            }
        }
    }
    for(i=1;i<m;i++)
    {   if(c[i].beg==1)
            dmin=min(dmin,c[i].nr);
    }
    cout<<dmin;
    /*cout<<endl;
    for(i=1;i<=m;i++)
        cout<<c[i].x<<' '<<c[i].y<<' '<<c[i].beg<<' '<<c[i].en<<' '<<c[i].nr<<endl;*/

    return 0;
}