#include<bits/stdc++.h>
using namespace std;

#define MAX (1<<18)
typedef long long ll;
int N,M;
ll A[100001];
ll B[100001];
ll C[100001];
int P[100001];


ll data[MAX];
int n;
void init(){
  n = 1;
  while( n < N ) n*=2;
  memset(data,0,sizeof(data));
}

void add(int a,int b,ll x,int k,int l,int r){
  if( r <= a|| b <= l ) return;
  if( a <= l && r <= b ) data[k] += x;
  else {
    add(a,b,x,2*k+1,l,(l+r)/2);
    add(a,b,x,2*k+2,(l+r)/2,r);
  }
} 
void add(int a,int b,ll x){
  add(a,b,x,0,0,n);
}

ll get(int id){
  id += n-1;
  ll ret = data[id];
  while( id > 0 ){
    id = (id- 1)/2;
    ret += data[id];
  } 
  return ret;
}

int main(){
  cin >> N >> M;
  for(int i=0;i<M;i++){
    cin >> P[i]; --P[i];
  }
  init();
  for(int i=0;i<N-1;i++){
    cin>> A[i] >> B[i] >> C[i];
  }
  int s = P[0];
  for(int i=1;i<M;i++){
    int e=P[i];
    if( s > e ) add(e,s,1LL);
    else add(s,e,1LL);
    s = e;
  }

  ll res = 0;
  for(int i=0;i<N-1;i++){
    ll st = get(i);
    res+= min( st * A[i] , st * B[i] + C[i] );
  }
  cout << res << endl;

  

}