#include <bits/stdc++.h>
using namespace std;
struct kkksc03
{
int father;
vector<int> sun;
int val;
};
int main()
{
int n;
cin>>n;
int a[n+1],ave=0;
kkksc03 tree[n+1];
for (int i=1;i<=n;i++)
{
cin>>a[i];
ave+=a[i];
}
ave/=n;
for (int i=1;i<=n;i++)
{
tree[i].val=a[i]-ave;
}
for (int i=1;i<n;i++)
{
int l,r;
cin>>l>>r;
if (r<l)swap(r,l);
tree[l].sun.push_back(r);
tree[r].father=l;
}
cout<<n-1<<endl;
for (int i=n;i>1;i--)
{
if (tree[i].val>0)
{
int j=i;
while (j!=1)
{
cout<<j<<" "<<tree[i].val<<" "<<tree[j].father;
tree[j].val=0;
j=tree[j].father;
}
}
}
for (int i=2;i<=n;i++)
{
int j=i;
int sum=-tree[j].val;
while (!tree[j].sun.empty())
{
for (int x=0;x<tree[j].sun.size();x++)
{
sum-=tree[j].sun[x];
}
}
cout<<tree[j].father<<" "<<j<<" "<<sum<<endl;
}
return 0;
}