#include <bits/stdc++.h>
using namespace std;
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL)
#define Bit(mask , i) ((mask >> i) & 1)
#define fi first
#define se second
#define _LOG2(nl) 31 - __builtin_clz(nl)
#define c_bit(nl) __builtin_popcount(nl)
#define ii pair<long long , int>
#define lll pair<long long , pair<long long , long long>>
#define lii pair<long long , pair<long long , int>>
#define iii pair<int , pair<int , int>>
#define iiii pair<pair<int , int> , pair<int , int>>
#define llll pair<pair<__int128 , __int128> , pair<__int128 , __int128>>
#define li pair<long long , int>
#define db long double
#define onBit(mask , i) (mask | (1 << i))
#define offBit(mask , i) (mask & (~(1 << i)))
const long long INF = 1e16;
const int N = 2e5 + 7;
int max1[N] , max2[N] , n;
vector<int> a[N];
void dfs(int u , int p){
for (int v : a[u]) if (v != p){
dfs(v , u);
max2[u] = max(max2[u] , max1[v] + 1);
if (max2[u] > max1[u]) swap(max1[u] , max2[u]);
}
}
void inp(){
cin >> n;
for (int i = 1 ; i < n ; ++i){
int u , v;
cin >> u >> v;
a[u].push_back(v);
a[v].push_back(u);
}
dfs(1 , 0);
}
void dfs_reroot(int u , int p){
for (int v : a[u]) if (v != p){
if (max1[v] + 1 == max1[u]) max2[v] = max(max2[v] , max2[u] + 1);
else max2[v] = max(max2[v] , max1[u] + 1);
if (max2[v] > max1[v]) swap(max1[v] , max2[v]);
dfs_reroot(v , u);
}
}
void solve(){
dfs_reroot(1 , 0);
for (int i = 1 ; i <= n ; ++i){
cout << max1[i] << " ";
}
}
int main(){
// freopen("difmax.inp" , "r" , stdin);
// freopen("difmax.out" , "w" , stdout);
faster;
inp();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmFzdGVyIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpCiNkZWZpbmUgQml0KG1hc2sgLCBpKSAoKG1hc2sgPj4gaSkgJiAxKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgX0xPRzIobmwpIDMxIC0gX19idWlsdGluX2NseihubCkKI2RlZmluZSBjX2JpdChubCkgX19idWlsdGluX3BvcGNvdW50KG5sKQojZGVmaW5lIGlpIHBhaXI8bG9uZyBsb25nICwgaW50PgojZGVmaW5lIGxsbCBwYWlyPGxvbmcgbG9uZyAsIHBhaXI8bG9uZyBsb25nICwgbG9uZyBsb25nPj4KI2RlZmluZSBsaWkgcGFpcjxsb25nIGxvbmcgLCBwYWlyPGxvbmcgbG9uZyAsIGludD4+CiNkZWZpbmUgaWlpIHBhaXI8aW50ICwgcGFpcjxpbnQgLCBpbnQ+PgojZGVmaW5lIGlpaWkgcGFpcjxwYWlyPGludCAsIGludD4gLCBwYWlyPGludCAsIGludD4+CiNkZWZpbmUgbGxsbCBwYWlyPHBhaXI8X19pbnQxMjggLCBfX2ludDEyOD4gLCBwYWlyPF9faW50MTI4ICwgX19pbnQxMjg+PgojZGVmaW5lIGxpIHBhaXI8bG9uZyBsb25nICwgaW50PgojZGVmaW5lIGRiIGxvbmcgZG91YmxlCiNkZWZpbmUgb25CaXQobWFzayAsIGkpIChtYXNrIHwgKDEgPDwgaSkpCiNkZWZpbmUgb2ZmQml0KG1hc2sgLCBpKSAobWFzayAmICh+KDEgPDwgaSkpKQoKY29uc3QgbG9uZyBsb25nIElORiA9IDFlMTY7CmNvbnN0IGludCBOID0gMmU1ICsgNzsKaW50IG1heDFbTl0gLCBtYXgyW05dICwgbjsKdmVjdG9yPGludD4gYVtOXTsKCnZvaWQgZGZzKGludCB1ICwgaW50IHApewogICAgZm9yIChpbnQgdiA6IGFbdV0pIGlmICh2ICE9IHApewogICAgICAgIGRmcyh2ICwgdSk7CgogICAgICAgIG1heDJbdV0gPSBtYXgobWF4Mlt1XSAsIG1heDFbdl0gKyAxKTsKICAgICAgICBpZiAobWF4Mlt1XSA+IG1heDFbdV0pIHN3YXAobWF4MVt1XSAsIG1heDJbdV0pOwogICAgfQp9Cgp2b2lkIGlucCgpewogICAgY2luID4+IG47CgogICAgZm9yIChpbnQgaSA9IDEgOyBpIDwgbiA7ICsraSl7CiAgICAgICAgaW50IHUgLCB2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgYVt1XS5wdXNoX2JhY2sodik7CiAgICAgICAgYVt2XS5wdXNoX2JhY2sodSk7CiAgICB9CgogICAgZGZzKDEgLCAwKTsKfQoKdm9pZCBkZnNfcmVyb290KGludCB1ICwgaW50IHApewogICAgZm9yIChpbnQgdiA6IGFbdV0pIGlmICh2ICE9IHApewogICAgICAgIGlmIChtYXgxW3ZdICsgMSA9PSBtYXgxW3VdKSBtYXgyW3ZdID0gbWF4KG1heDJbdl0gLCBtYXgyW3VdICsgMSk7CiAgICAgICAgZWxzZSBtYXgyW3ZdID0gbWF4KG1heDJbdl0gLCBtYXgxW3VdICsgMSk7CgogICAgICAgIGlmIChtYXgyW3ZdID4gbWF4MVt2XSkgc3dhcChtYXgxW3ZdICwgbWF4Mlt2XSk7CiAgICAgICAgZGZzX3Jlcm9vdCh2ICwgdSk7CiAgICB9Cn0KCnZvaWQgc29sdmUoKXsKICAgIGRmc19yZXJvb3QoMSAsIDApOwoKICAgIGZvciAoaW50IGkgPSAxIDsgaSA8PSBuIDsgKytpKXsKICAgICAgICBjb3V0IDw8IG1heDFbaV0gPDwgIiAiOwogICAgfQp9CgppbnQgbWFpbigpewovLyAgICBmcmVvcGVuKCJkaWZtYXguaW5wIiAsICJyIiAsIHN0ZGluKTsKLy8gICAgZnJlb3BlbigiZGlmbWF4Lm91dCIgLCAidyIgLCBzdGRvdXQpOwogICAgZmFzdGVyOwogICAgaW5wKCk7CiAgICBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0K