#include <bits/stdc++.h>
using namespace std;
const int MAX = 1000 * 100 + 10;
int n, m, x1, x2, y, konieczne, wynik = MAX * 2;
vector<int> wiersze, kolumny;
int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    cin >> x1;
    kolumny.push_back(x1);
  }
  for (int i = 1; i <= m; i++) {
    cin >> x1 >> x2 >> y;
    if (x1 == 1) {
      if (x2 == 1000 * 1000 * 1000)
        konieczne++;
      else
        wiersze.push_back(x2);
    }
  }
  sort(kolumny.begin(), kolumny.end());
  sort(wiersze.begin(), wiersze.end());
  int j = 0;
  kolumny.push_back(1000 * 1000 * 1000);
  int licznik = wiersze.size();
  for (int i = 0; i < kolumny.size(); i++) {
    while (j < wiersze.size() && wiersze[j] < kolumny[i]) j++, licznik--;
    licznik = max(0, licznik);
    wynik = min(wynik, i + licznik + konieczne);
  }
  cout << wynik << "\n";
}
