#include <bits/stdc++.h>
using namespace std;
struct ROAD {
  long long begin;
  long long end;
  long long init;
};
vector<int> b;
long long pred(long long res, const ROAD &r) {
  for (int i = (0); i < ((((b).size()))); ++i) {
    if (r.begin <= b[i] && b[i] <= r.end) res += r.init + b[i] - r.begin;
  }
  return res;
}
int main(void) {
  int n, m, k;
  cin >> n >> m >> k;
  vector<ROAD> v(m);
  for (int i = (0); i < ((m)); ++i) cin >> v[i].begin >> v[i].end >> v[i].init;
  for (int i = (0); i < ((k)); ++i) {
    int tmp;
    cin >> tmp;
    b.push_back(tmp);
  }
  cout << accumulate((v).begin(), (v).end(), (long long)0, pred);
}
