#include <bits/stdc++.h>
#define clr(x) memset(x,0,sizeof x)
#define For(i,a,b) for (int i=(a);i<=(b);i++)
#define Fod(i,b,a) for (int i=(b);i>=(a);i--)
#define pb(x) push_back(x)
#define mp(x,y) make_pair(x,y)
#define fi first
#define se second
#define outval(x) cerr<<#x" = "<<x<<endl
#define outtag(x) cerr<<"-----------------"#x"-----------------\n"
#define outarr(a,L,R) cerr<<#a"["<<L<<".."<<R<<"] = ";\
                    For(_x,L,R) cerr<<a[_x]<<" ";cerr<<endl;
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair <int,int> pii;
LL read(){
    LL x=0,f=0;
    char ch=getchar();
    while (!isdigit(ch))
        f=ch=='-',ch=getchar();
    while (isdigit(ch))
        x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    return f?-x:x;
}
const int N=100005;
int n,cnt;
vector <int> e[N];
int dis[N],fa[N];
int findfar(int x,int pre=0,int d=0){
	dis[x]=d,fa[x]=pre;
	int res=x;
	for (auto y : e[x])
		if (y!=pre){
			int z=findfar(y,x,d+1);
			if (dis[z]>dis[res])
				res=z;
		}
	return res;
}
vector <int> d,ans;
bool checkreverse(){
	vector <int> e=d;
	reverse(e.begin(),e.end());
	For(i,0,(int)d.size()-1)
		if (e[i]!=d[i])
			return e[i]<d[i];
	return 0;
}
int main(){
	n=read();
	For(i,1,n-1){
		int x=read(),y=read();
		e[x].pb(y),e[y].pb(x);
	}
	int x=findfar(1),y=findfar(x);
	for (int z=fa[y];z!=x;z=fa[z])
		d.pb(e[z].size()-2);
	if (checkreverse())
		reverse(d.begin(),d.end());
	ans.pb(cnt=1);
	for (auto i : d){
		For(j,cnt+2,cnt+i+1)
			ans.pb(j);
		ans.pb(cnt+1);
		cnt+=i+1;
	}
	ans.pb(n);
	if (ans.size()<n)
		puts("-1");
	else {
		for (auto i : ans)
			printf("%d ",i);
		puts("");
	}
	return 0;
}