#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const double EPS = 1e-9;
inline int cmpD(double x, double y, double tol = EPS) {
  return (x <= y + tol) ? (x + tol < y) ? -1 : 0 : 1;
}
struct rd {
  int a;
  int b;
  int c;
};
rd rds[100123];
inline long long crds(int i, int b) {
  if ((b < rds[i].a) or (b > rds[i].b)) return 0;
  return (b - rds[i].a) + rds[i].c;
}
long long go(int n, int m, int k) {
  int b;
  for (int i = 0; i < m; ++i) cin >> rds[i].a >> rds[i].b >> rds[i].c;
  long long t = 0;
  for (int K = 0; K < k; ++K) {
    cin >> b;
    for (int i = 0; i < m; ++i) t += crds(i, b);
  }
  return t;
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  cout << go(n, m, k) << endl;
  return 0;
}
