#include <bits/stdc++.h>
using namespace std;
vector<int> piony;
vector<int> poziomy;
int n, m;
bool sorting(int a, int b) { return a < b; }
int bns(int x) {
  int l = 0;
  int r = poziomy.size() - 1;
  while (l != r) {
    if (poziomy[r] >= x) r--;
    if (poziomy[r] < x) return poziomy.size() - r - 1;
    int s = (l + r) / 2;
    if (poziomy[s] < x)
      l = s;
    else
      r = s - 1;
  }
  return poziomy.size() - l - 1;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cin >> n >> m;
  piony.push_back(1000000000);
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    piony.push_back(x);
  }
  sort(piony.begin(), piony.end(), sorting);
  for (int i = 0; i < m; i++) {
    int a, b, c;
    cin >> a >> b >> c;
    if (a == 1) poziomy.push_back(b);
  }
  poziomy.push_back(-1);
  sort(poziomy.begin(), poziomy.end(), sorting);
  int mini = 2000000002;
  for (int i = 0; i <= n; i++) {
    int k = bns(piony[i]);
    mini = min(mini, k + i);
  }
  cout << mini << "\n";
  return 0;
}
