#include<bits/stdc++.h> usingnamespace std; constint maxn = 1e5 + 50; typedeflonglong ll; int n, m, b[maxn], diff[maxn], pre[maxn];
structnode { int a_, b_, c_; } a[maxn];
intmain(){ cin >> n >> m; for (int i = 1; i <= m; ++i) cin >> b[i]; for (int i = 1; i < n; ++i) cin >> a[i].a_ >> a[i].b_ >> a[i].c_; for (int i = 1; i < m; ++i) { int mi = min(b[i], b[i + 1]), mx = max(b[i], b[i + 1]); ++diff[mi], --diff[mx]; } ll ans = 0; for (int i = 1; i < n; ++i) { diff[i] += diff[i - 1]; ans += min(1ll * a[i].a_ * diff[i], (a[i].c_ + 1ll * a[i].b_ * diff[i])); } cout << ans; return0; }