#include <bits/stdc++.h>
using namespace std;
const int Dian = 200005;
const int Bian = Dian;
const int M = Dian;
const int Segment_Size = Dian * 4;
int fir[Dian], ne[Bian], to[Bian], cnt, n, m;
int dp[Dian], depth[Dian], fa[Dian], Bigson[Dian], top[Dian], S[Dian],
    dep[Dian], info[Dian];
struct One {
  int from, to, C, LCA;
} Road[M];
vector<One> G[Dian];
void add(int x, int y) {
  ne[++cnt] = fir[x];
  fir[x] = cnt;
  to[cnt] = y;
}
void getinfo(int x, int f) {
  S[x] = 1;
  dep[x] = dep[f] + 1;
  int mx = -1;
  for (int i = fir[x]; i; i = ne[i]) {
    int V = to[i];
    getinfo(V, x);
    if (S[V] > mx) Bigson[x] = V, mx = S[V];
    S[x] += S[V];
  }
}
void getidx(int x, int T) {
  top[x] = T;
  if (Bigson[x]) getidx(Bigson[x], T);
  for (int i = fir[x]; i; i = ne[i]) {
    int V = to[i];
    if (V == Bigson[x]) continue;
    getidx(V, V);
  }
}
int LCA(int x, int y) {
  while (top[x] != top[y]) {
    if (dep[top[x]] < dep[top[y]]) swap(x, y);
    x = fa[top[x]];
  }
  if (dep[y] < dep[x]) return y;
  return x;
}
void read(void) {
  scanf("%d%d", &n, &m);
  for (int i = 2; i <= n; i++) {
    scanf("%d", &fa[i]);
    add(fa[i], i);
  }
  getinfo(1, 0);
  getidx(1, 1);
  for (int i = 1; i <= m; i++) {
    scanf("%d%d%d", &Road[i].from, &Road[i].to, &Road[i].C);
    Road[i].LCA = LCA(Road[i].from, Road[i].to);
    G[Road[i].LCA].push_back(Road[i]);
  }
}
int getans(One Query) {
  int x = Query.from, y = Query.to, now = Query.C;
  while (top[x] != top[y]) {
    if (dep[top[x]] < dep[top[y]]) swap(x, y);
    now = now + info[top[x]] - info[Bigson[x]];
    x = fa[top[x]];
  }
  if (dep[x] > dep[y]) swap(x, y);
  now = now + info[x] - info[Bigson[y]];
  return now;
}
int dfs(int x, int f) {
  int sum = 0;
  for (int i = fir[x]; i; i = ne[i]) sum += dfs(to[i], x);
  info[x] = info[Bigson[x]] + sum;
  dp[x] = sum;
  for (int i = 0; i < (int)G[x].size(); i++)
    dp[x] = max(dp[x], getans(G[x][i]));
  info[x] -= dp[x];
  return dp[x];
}
void doit(void) { printf("%d\n", dfs(1, 0)); }
int main(void) {
  read();
  doit();
}
