#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void checkmin(T& a, const T& b) {
  if (b < a) a = b;
}
template <class T>
inline void checkmax(T& a, const T& b) {
  if (b > a) a = b;
}
template <class T>
inline T sqr(const T& a) {
  return a * a;
}
const int MAX = 100000 + 5;
int L[MAX], R[MAX], start[MAX];
int main() {
  int N, M, K;
  cin >> N >> M >> K;
  memset((L), (int)0, sizeof(L));
  ;
  memset((R), (int)0, sizeof(R));
  ;
  memset((start), (int)0, sizeof(start));
  ;
  for (int i = 0, _n = (M); i < _n; ++i) {
    scanf("%d%d%d", &L[i], &R[i], &start[i]);
  }
  long long answer = 0;
  for (int i = 0, _n = (K); i < _n; ++i) {
    int cell;
    scanf("%d", &cell);
    for (int j = 0, _n = (M); j < _n; ++j) {
      if (L[j] <= cell && cell <= R[j]) {
        answer += start[j] + (cell - L[j]);
      }
    }
  }
  cout << answer << endl;
  return 0;
}
