import sys
readline=sys.stdin.readline

N=int(readline())
used=[False]*N
cnt=[0]*N
graph=[[] for x in range(N)]
for i in range(N):
    a,b=map(int,readline().split())
    a-=1;b-=1
    graph[a].append((b,i))
    graph[b].append((a,i))
    cnt[a]+=1
    cnt[b]+=1
ans_lst=[None]*N
if 0 in cnt:
    print("No")
    exit()
stack=[x for x in range(N) if cnt[x]==1]
while stack:
    x=stack.pop()
    for y,i in graph[x]:
        if not used[i]:
            cnt[x]-=1
            ans_lst[i]=x+1
            used[i]=True
            cnt[y]-=1
            if cnt[y]==1:
                stack.append(y)
            break
    else:
        print("No")
        exit()
for x in range(N):
    if cnt[x]==0:
        continue
    while cnt[x]:
        for y,i in graph[x]:
            if not used[i]:
                cnt[x]-=1
                cnt[y]-=1
                ans_lst[i]=x+1
                used[i]=True
                x=y
                break
print("Yes")
print(*ans_lst,sep="\n")