#include <bits/stdc++.h>
using namespace std;
vector<long long int> vert;
vector<pair<long long int, pair<long long int, long long int> > > horz;
bool comp(pair<long long int, pair<long long int, long long int> > x,
          pair<long long int, pair<long long int, long long int> > y) {
  return x.second.second > y.second.second;
}
bool comp2(long long int x, long long int y) { return x > y; }
int main() {
  long long int n, m;
  cin >> n >> m;
  long long int u, v, w;
  long long int ansC = 0;
  for (long long int i = 1; i <= n; i++) {
    cin >> v;
    vert.push_back(v);
  }
  for (long long int i = 1; i <= m; i++) {
    cin >> u >> v >> w;
    if (u != 1)
      continue;
    else if (v == pow(10, 9))
      ansC++;
    else
      horz.push_back(make_pair(w, make_pair(u, v)));
  }
  sort(vert.begin(), vert.end(), comp2);
  sort(horz.begin(), horz.end(), comp);
  long long int i = 0, j = 0;
  long long int cnt = 0;
  long long int ans = pow(10, 6);
  long long int s = vert.size();
  ans = min(ans, s);
  while (i < horz.size() && j < s) {
    if (horz[i].second.second < vert[j]) {
      ans = min(ans, s - j - 1 + cnt);
      j++;
      continue;
    }
    cnt++;
    i++;
  }
  if (j < vert.size()) {
    ans = min(ans, cnt);
  }
  cout << ans + ansC;
}
