#include<bits/stdc++.h>
using namespace std;
const int SIGMA=2;
const int MAXN=30*100100;
struct trie {
int id=1;
int tree[MAXN][SIGMA];
int sz[MAXN];
trie() {
clear();
}
void clear() {
id=1;
memset(tree,0,sizeof tree);
memset(sz,0,sizeof sz);
}
int size() {
return id;
}
#define HASH(x) ((x)-'a')
void insert(string& t) {
int akt=1;
for(auto i:t) {
if(tree[akt][HASH(i)]==0) {
tree[akt][HASH(i)]=++id;
}
sz[akt]++;
akt=tree[akt][HASH(i)];
}
sz[akt]++;
}
bool query(string &t) {
int akt=1;
for(auto i:t) {
if(sz[tree[akt][HASH(i)]]==0) return false;
akt=tree[akt][HASH(i)];
}
return sz[akt]>0;
}
void remove(string& t) {
int akt=1;
for(auto i:t) {
if(sz[tree[akt][HASH(i)]]==0) {
return ; //nincs benne
}
sz[akt]--;
akt=tree[akt][HASH(i)];
}
sz[akt]--;
}
#define BITS 30
void insert_bits(int x) {
int akt=1;
for(int i=BITS;i>=0;i--) {
int bit=(x&(1<<i))!=0;
if(tree[akt][bit]==0) {
tree[akt][bit]=++id;
}
sz[akt]++;
akt=tree[akt][bit];
}
sz[akt]++;
}
void remove_bits(int x) {
int akt=1;
for(int i=BITS;i>=0;i--) {
int bit=(x&(1<<i))!=0;
if(tree[akt][bit]==0) {
return ;
}
sz[akt]--;
akt=tree[akt][bit];
}
sz[akt]--;
}
int biggest_xor_with(int x) {
int opt=0;
int akt=1;
for(int i=BITS;i>=0;i--){
int bit=(x&(1<<i))!=0;
if(bit==1 && sz[tree[akt][0]]) {
akt=tree[akt][0];
}else if(bit==0 && sz[tree[akt][1]]) {
opt|=1<<i;
akt=tree[akt][1];
}else {
if(sz[tree[akt][0]]) akt=tree[akt][0];
else if(sz[tree[akt][1]]) {
opt|=1<<i;
akt=tree[akt][1];
}
else return x;
}
}
return opt;
}
};
vector<pair<int,int>> adj[MAXN];
#define xx first
#define yy second
int dist[MAXN];
int st[MAXN];
void dfs(int x, int akt) {
dist[x]=akt;
st[x]=1;
for(auto i:adj[x]) {
if(!st[i.xx]) {
dfs(i.xx, i.yy^akt);
}
}
}
trie tr;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
for(int i=1;i<n;++i) {
int a,b,c;
cin>>a>>b>>c;
adj[a].push_back({b,c});
adj[b].push_back({a,c});
}
dfs(1,0);
map<int,int> inv;
for(int i=1;i<=n;++i) inv[dist[i]]=i, tr.insert_bits(dist[i]);
for(int i=1;i<=n;++i) cout<<inv[tr.biggest_xor_with(dist[i])]<<" ";
cout<<"\n";
return 0;
}