#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define canuc12k ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n, a[300005];
int seg[1500005];
int spr[20][300005];
int high[300005];
int elt[300005], sz[300005], stt[300005];
vector<int> g[300005];
int u, cnt=1;
int dfs(int a, int par){
spr[0][a]=par;
// cout<<a<<"\n";
elt[cnt]=a;
stt[a]=cnt;
cnt++;
for(auto i : g[a]){
if(i==par) continue;
high[i]=high[a]+1;
sz[a]+=dfs(i,a);
}
return sz[a]+1;
}
void update(int pos, int l, int r, int u, int val){
if(l>u || r<u) return;
if(l==r){
seg[pos]=val;
return;
}
int mid=(l+r)>>1;
update(pos*2, l, mid, u, val);
update(pos*2+1, mid+1, r, u, val);
seg[pos]=max(seg[pos*2], seg[pos*2+1]);
}
int get(int pos, int l, int r, int u, int v){
if(l>v || r<u) return 0;
if(l>=u && r<=v) return seg[pos];
int mid=(l+r)>>1;
return max(get(pos*2, l, mid, u, v), get(pos*2+1, mid+1, r, u, v));
}
int main(){
canuc12k
cin>>n;
cin>>a[1];
for(int i=2;i<=n+1;i++){
cin>>a[i]>>u;
g[u+1].pb(i);
g[i].pb(u+1);
}
n++;
dfs(1,1);
for(int i=1;i<=19;i++){
for(int j=1;j<=n;j++){
spr[i][j]=spr[i-1][spr[i-1][j]];
}
}
update(1, 1, n, stt[1], a[1]);
for(int i=2;i<=n;i++){
int x = i;
for(int k = log2(high[i]); k >= 0; k--) {
int cha = spr[k][x];
int val = get(1, 1, n, stt[cha], stt[cha]+sz[cha]);
if(val < a[i]) x = spr[k][x];
}
cout << high[i] - high[x] <<"\n";
update(1, 1, n, stt[i], a[i]);
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBjYW51YzEyayBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CmludCBuLCBhWzMwMDAwNV07CmludCBzZWdbMTUwMDAwNV07CmludCBzcHJbMjBdWzMwMDAwNV07CmludCBoaWdoWzMwMDAwNV07CmludCBlbHRbMzAwMDA1XSwgc3pbMzAwMDA1XSwgc3R0WzMwMDAwNV07CnZlY3RvcjxpbnQ+IGdbMzAwMDA1XTsKaW50IHUsIGNudD0xOwppbnQgZGZzKGludCBhLCBpbnQgcGFyKXsKCXNwclswXVthXT1wYXI7Ci8vCWNvdXQ8PGE8PCJcbiI7CgllbHRbY250XT1hOwoJc3R0W2FdPWNudDsKCWNudCsrOwoJZm9yKGF1dG8gaSA6IGdbYV0pewoJCWlmKGk9PXBhcikgY29udGludWU7CgkJaGlnaFtpXT1oaWdoW2FdKzE7CgkJc3pbYV0rPWRmcyhpLGEpOwoJfQoJcmV0dXJuIHN6W2FdKzE7Cn0Kdm9pZCB1cGRhdGUoaW50IHBvcywgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHZhbCl7CglpZihsPnUgfHwgcjx1KSByZXR1cm47CglpZihsPT1yKXsKCQlzZWdbcG9zXT12YWw7CgkJcmV0dXJuOwoJfQoJaW50IG1pZD0obCtyKT4+MTsKCXVwZGF0ZShwb3MqMiwgbCwgbWlkLCB1LCB2YWwpOwoJdXBkYXRlKHBvcyoyKzEsIG1pZCsxLCByLCB1LCB2YWwpOwoJc2VnW3Bvc109bWF4KHNlZ1twb3MqMl0sIHNlZ1twb3MqMisxXSk7Cn0KaW50IGdldChpbnQgcG9zLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdil7CglpZihsPnYgfHwgcjx1KSByZXR1cm4gMDsKCWlmKGw+PXUgJiYgcjw9dikgcmV0dXJuIHNlZ1twb3NdOwoJaW50IG1pZD0obCtyKT4+MTsKCXJldHVybiBtYXgoZ2V0KHBvcyoyLCBsLCBtaWQsIHUsIHYpLCBnZXQocG9zKjIrMSwgbWlkKzEsIHIsIHUsIHYpKTsKfQppbnQgbWFpbigpewoJY2FudWMxMmsKCgljaW4+Pm47CgljaW4+PmFbMV07Cglmb3IoaW50IGk9MjtpPD1uKzE7aSsrKXsKCQljaW4+PmFbaV0+PnU7CgkJZ1t1KzFdLnBiKGkpOwoJCWdbaV0ucGIodSsxKTsKCX0KCW4rKzsKCWRmcygxLDEpOwoJZm9yKGludCBpPTE7aTw9MTk7aSsrKXsKCQlmb3IoaW50IGo9MTtqPD1uO2orKyl7CgkJCXNwcltpXVtqXT1zcHJbaS0xXVtzcHJbaS0xXVtqXV07CgkJfQoJfQoJCiAgICB1cGRhdGUoMSwgMSwgbiwgc3R0WzFdLCBhWzFdKTsKCglmb3IoaW50IGk9MjtpPD1uO2krKyl7CiAgICAgICAgaW50IHggPSBpOwogICAgICAgIGZvcihpbnQgayA9IGxvZzIoaGlnaFtpXSk7IGsgPj0gMDsgay0tKSB7CiAgICAgICAgICAgIGludCBjaGEgPSBzcHJba11beF07CiAgICAgICAgICAgIGludCB2YWwgPSBnZXQoMSwgMSwgbiwgc3R0W2NoYV0sIHN0dFtjaGFdK3N6W2NoYV0pOwogICAgICAgICAgICBpZih2YWwgPCBhW2ldKSB4ID0gc3ByW2tdW3hdOwogICAgICAgIH0KCiAgICAgICAgY291dCA8PCBoaWdoW2ldIC0gaGlnaFt4XSA8PCJcbiI7CgoJCXVwZGF0ZSgxLCAxLCBuLCBzdHRbaV0sIGFbaV0pOwoJfQp9