#include <bits/stdc++.h>
using namespace std;
const int N = 100000 + 5;
const int K = 100 + 5;
struct Node {
  int a, b, c;
  void Scan() { scanf("%d %d %d", &a, &b, &c); }
  unsigned long long GetHeight(int n) {
    if (n < a || n > b) return 0;
    return (unsigned long long)c + n - a;
  }
};
int n, m, k;
Node a[N];
int b[K];
int main() {
  unsigned long long res = 0;
  scanf("%d %d %d", &n, &m, &k);
  for (int i = 0; i < (int)(m); i++) a[i].Scan();
  for (int i = 0; i < (int)(k); i++) scanf("%d", &b[i]);
  for (int i = 0; i < (int)(k); i++)
    for (int j = 0; j < (int)(m); j++) res += a[j].GetHeight(b[i]);
  printf("%I64d\n", res);
  return 0;
}
