#include<bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define ll long long
#define pii pair<int,int>
#define pill pair<int,ll>
#define pll pair<ll,ll>
#define pb push_back
#define fi first
#define se second
#define ff fi.fi
#define fs fi.se
#define sf se.fi
#define ss se.se
#define MASK(x) (((1)<<(x))-1)
#define getbit(x,k) (((x)>>(k))&1)
using namespace std;
const int maxn=2e5+5,mod=1e9+7;
const ll inf=1e18;
int n,m;
vector<pii>eg[maxn];
ll d[maxn],ans[maxn];
bool id[maxn];
priority_queue<pll,vector<pll>,greater<pll>>pQ;
void dijkstra()
{
while(pQ.size())
{
pll u=pQ.top();pQ.pop();
if(u.fi!=d[u.se]) continue;
for(pii v:eg[u.se]) if(u.fi+v.se<d[v.fi])
{
d[v.fi]=u.fi+v.se;
pQ.push({d[v.fi],v.fi});
}
}
}
void solve(int tp)
{
fill(d+1,d+1+n,inf);
for(int i=1;i<=n;i++) if(id[i]==tp)
{
pQ.push({0,i});
d[i]=0;
}
dijkstra();
for(int i=1;i<=n;i++) if(d[i] && d[i]!=inf) ans[i]=d[i];
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>id[i];
for(int i=1;i<=m;i++)
{
int u,v,c;cin>>u>>v>>c;
eg[v].pb({u,c});
}
memset(ans,-1,(n+1)*sizeof(ll));
solve(0);solve(1);
for(int i=1;i<=n;i++) cout<<ans[i]<<'\n';
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgZmFzdGlvIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIHBpbGwgcGFpcjxpbnQsbGw+CiNkZWZpbmUgcGxsIHBhaXI8bGwsbGw+CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBmZiBmaS5maQojZGVmaW5lIGZzIGZpLnNlCiNkZWZpbmUgc2Ygc2UuZmkKI2RlZmluZSBzcyBzZS5zZQojZGVmaW5lIE1BU0soeCkgKCgoMSk8PCh4KSktMSkKI2RlZmluZSBnZXRiaXQoeCxrKSAoKCh4KT4+KGspKSYxKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtYXhuPTJlNSs1LG1vZD0xZTkrNzsKY29uc3QgbGwgaW5mPTFlMTg7CgppbnQgbixtOwp2ZWN0b3I8cGlpPmVnW21heG5dOwpsbCBkW21heG5dLGFuc1ttYXhuXTsKYm9vbCBpZFttYXhuXTsKcHJpb3JpdHlfcXVldWU8cGxsLHZlY3RvcjxwbGw+LGdyZWF0ZXI8cGxsPj5wUTsKCgp2b2lkIGRpamtzdHJhKCkKewogICAgd2hpbGUocFEuc2l6ZSgpKQogICAgewogICAgICAgIHBsbCB1PXBRLnRvcCgpO3BRLnBvcCgpOwogICAgICAgIGlmKHUuZmkhPWRbdS5zZV0pIGNvbnRpbnVlOwogICAgICAgIGZvcihwaWkgdjplZ1t1LnNlXSkgaWYodS5maSt2LnNlPGRbdi5maV0pCiAgICAgICAgewogICAgICAgICAgICBkW3YuZmldPXUuZmkrdi5zZTsKICAgICAgICAgICAgcFEucHVzaCh7ZFt2LmZpXSx2LmZpfSk7CiAgICAgICAgfQogICAgfQp9CnZvaWQgc29sdmUoaW50IHRwKQp7CiAgICBmaWxsKGQrMSxkKzErbixpbmYpOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspIGlmKGlkW2ldPT10cCkKICAgIHsKICAgICAgICBwUS5wdXNoKHswLGl9KTsKICAgICAgICBkW2ldPTA7CiAgICB9CiAgICBkaWprc3RyYSgpOwogICAgZm9yKGludCBpPTE7aTw9bjtpKyspIGlmKGRbaV0gJiYgZFtpXSE9aW5mKSBhbnNbaV09ZFtpXTsKfQppbnQgbWFpbigpCnsKICAgIGNpbj4+bj4+bTsKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKSBjaW4+PmlkW2ldOwogICAgZm9yKGludCBpPTE7aTw9bTtpKyspCiAgICB7CiAgICAgICAgaW50IHUsdixjO2Npbj4+dT4+dj4+YzsKICAgICAgICBlZ1t2XS5wYih7dSxjfSk7CiAgICB9CiAgICBtZW1zZXQoYW5zLC0xLChuKzEpKnNpemVvZihsbCkpOwogICAgc29sdmUoMCk7c29sdmUoMSk7CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKykgY291dDw8YW5zW2ldPDwnXG4nOwp9Cg==