//#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int d, n, m;
vector<int> daysSkipped;
vector< pair<int, int > > scutiri;

bool cmp(pair <int, int> A, pair <int, int> B)
{
	if (A.first < B.first) return true;
	if (A.first == B.first && A.second < B.second) return true;
	return false;
}
int main()
{
	//freopen("input.in", "r", stdin);
	//freopen("output.out", "w", stdout);
	cin >> d >> n >> m;
	int x,y;
	for (int i = 0; i < n; ++i)
	{
		cin >> x;
		daysSkipped.push_back(x);
	}
	sort(daysSkipped.begin(), daysSkipped.end());
	for (int i = 0; i < m; ++i)
	{
		cin >> x >> y;
		scutiri.push_back(make_pair(x, y));
	}
	sort(scutiri.begin(), scutiri.end(), cmp);
	int k = 0;
	int j = 0;
	int sol = 0;
	int maxim = 0;
	int poz;
	while (k < daysSkipped.size())
	{
		maxim = 0;
		while (j< m && scutiri[j].first <= daysSkipped[k])
		{
			if (scutiri[j].second > maxim)
			{
				maxim = scutiri[j].second;
				poz = j;
			}
			j++;
		}
		sol++;
		while (k < n && daysSkipped[k] <= scutiri[poz].second) k++;
	}
	cout << sol << "\n";
}