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

typedef long long lint;
typedef pair<int, pair<int, int>> ppi;
const int MX=100010;

int n, m, X[MX];;
int U[MX], cnt[MX]; lint sz[MX]; 
ppi E[MX];

int find(int x){
	return x==U[x] ? x : U[x]=find(U[x]);
}
void unite(int x, int y){
	x = find(x), y = find(y);
	if(x==y) return;
	U[y]=x, sz[x]+=sz[y], cnt[x]+=cnt[y], cnt[y]=0;
}

int main(){
	ios::sync_with_stdio(0); cin.tie(0);
	cin>>n>>m;
	for(int i=1; i<=n; i++) cin>>X[i];
	for(int i=1; i<=m; i++){
		int u,v,c; cin>>u>>v>>c;
		E[i] = {c, {u,v}};
	}
	sort(E+1, E+m+1);

	for(int i=1; i<=n; i++)
		U[i]=i, sz[i]=X[i];

	int sum=0;
	for(int i=1; i<=m; i++){
		int u,v; tie(u,v) = E[i].second;
		unite(u,v);
		cnt[find(u)]++;
		if(sz[find(u)] >= E[i].first){
			sum += cnt[find(u)];
			cnt[find(u)] = 0;
		}
	}
	cout<<m-sum<<'\n';
	return 0;
}