#include <bits/stdc++.h>
using namespace std;
struct Query {
  int left, right, start;
  Query() {}
  Query(int nleft, int nright, int nstart) {
    left = nleft;
    right = nright;
    start = nstart;
  }
};
Query queries[110000];
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  for (int i = 0; i < m; i++) {
    int left, right, start;
    cin >> left >> right >> start;
    left--;
    right--;
    queries[i] = Query(left, right, start);
  }
  long long answer = 0;
  for (int i = 0; i < k; i++) {
    int pos;
    cin >> pos;
    pos--;
    for (int j = 0; j < m; j++) {
      if (pos >= min(queries[j].left, queries[j].right) &&
          pos <= max(queries[j].left, queries[j].right)) {
        if (queries[j].left <= queries[j].right)
          answer += queries[j].start + pos - queries[j].left;
        else
          answer += queries[j].start + queries[j].left - pos;
      }
    }
  }
  cout << answer;
  return 0;
}
