#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<fstream>
#include<map>
#include<ctime>
#include<set>
#include<queue>
#include<cmath>
#include<vector>
#include<bitset>
#include<functional>
#define x first
#define y second
#define mp make_pair
#define pb push_back
#define REP(i,l,r) for((i)=(l);(i)<=(r);++(i))
#define REP2(i,l,r) for((i)=(l);(i)!=(r);++(i))
using namespace std;
typedef long long LL;
typedef double ld;
const int MAX= 1000000 +10 ;
int n;
int begin[ MAX] , next[ MAX] , t[ MAX] , tot, ne[ MAX] ;
void add( int a, int b)
{
t[ ++tot] = b;
next[ tot] = begin[ a] ;
begin[ a] = tot;
}
int hash [ MAX] , fa[ MAX] ;
int q[ MAX] , head, end;
void BFS( )
{
head= 1 , end= 1 ;
q[ end++] = 1 ;
hash [ 1 ] = 1 ;
while ( head< end)
{
int u= q[ head++] ;
for ( int i= begin[ u] ; i; i= next[ i] )
{
int v= t[ i] ;
if ( ! hash [ v] )
{
hash [ v] = 1 ;
fa[ v] = u;
q[ end++] = v;
}
}
}
}
//如果一棵子树能够先访问根,则反过来必定能最后访问根。。
int could[ MAX] ;
void fail( )
{
printf( "BRAK\n " ) ;
exit( 0 ) ;
}
void work( int u)
{
int i;
int must= 0 ;
could[ u] = 1 ;
for ( i= begin[ u] ; i; i= next[ i] )
{
int v= t[ i] ;
if ( v== fa[ u] )
continue ;
if ( next[ begin[ v] ] )
++must;
if ( ! could[ v] )
must= 2 ;
}
if ( must> 1 )
could[ u] = 0 ;
}
int is [ MAX] ;
int dp0[ MAX] , dp1[ MAX] , ans[ MAX] ;
void show( int u)
{
int i;
vector< int> go, go1;
for ( i= begin[ u] ; i; i= next[ i] )
{
int v= t[ i] ;
if ( v== fa[ u] )
continue ;
if ( next[ begin[ v] ] )
go.pb ( v) ;
else go1.pb ( v) ;
}
if ( go.size ( ) )
ans[ go[ 0 ] ] = ans[ u] ^1 ;
if ( ans[ u] == 0 )
{
printf( "%d\n " , u) ;
if ( go.size ( ) )
show( go[ 0 ] ) ;
}
REP2( i, 0 , ( int ) go1.size ( ) )
printf( "%d\n " , go1[ i] ) ;
if ( ans[ u] == 1 )
{
if ( go.size ( ) )
show( go[ 0 ] ) ;
printf( "%d\n " , u) ;
}
}
int main( )
{
#ifndef ONLINE_JUDGE
// freopen( "input.txt" , "r" , stdin) ; freopen( "output.txt" , "w" , stdout) ;
#endif
int i;
scanf( "%d" , &n) ;
REP( i, 1 , n-1 )
{
int a, b;
scanf( "%d%d" , &a, &b) ;
add( a, b) ;
add( b, a) ;
}
BFS( ) ;
for ( i= n; i>= 1 ; --i)
{
int t= q[ i] ;
work( t) ;
}
int u= n;
while ( 1 )
{
is [ u] = 1 ;
if ( u== 1 )
break ;
u= fa[ u] ;
}
if ( could[ n] ) //不先跳到这个点。。
dp1[ n] = 1 ;
if ( ! next[ begin[ n] ] )
dp0[ n] = 1 ;
u= fa[ n] ;
int last= n;
ne[ u] = n;
while ( 1 )
{
int go= 0 , go1= 0 ;
for ( i= begin[ u] ; i; i= next[ i] )
{
int v= t[ i] ;
if ( is [ v] )
continue ;
if ( ! could[ v] )
fail( ) ;
if ( next[ begin[ v] ] )
++go;
else ++go1;
}
if ( go> 2 )
fail( ) ;
if ( go== 0 )
{
dp0[ u] = ( go1?dp0[ last] :( dp0[ last] || dp1[ last] ) ) ;
dp1[ u] = dp0[ last] || dp1[ last] ;
}
if ( go== 1 )
{
dp0[ u] = dp0[ last] ;
dp1[ u] = dp0[ last] || dp1[ last] ;
}
if ( go== 2 )
{
dp0[ u] = 0 ;
dp1[ u] = dp0[ last] ;
}
if ( u== 1 )
break ;
last= u;
u= fa[ u] ;
ne[ u] = last;
}
if ( ! dp0[ 1 ] )
fail( ) ;
u= 1 ;
ans[ 1 ] = 0 ;
while ( 1 )
{
vector< int> go, go1;
for ( i= begin[ u] ; i; i= next[ i] )
{
int v= t[ i] ;
if ( is [ v] )
continue ;
if ( ! next[ begin[ v] ] )
go1.pb ( v) ;
else
go.pb ( v) ;
}
int tt= ne[ u] ;
if ( ans[ u] == 0 )
{
printf( "%d\n " , u) ;
if ( ! go1.size ( ) && ! go.size ( ) )
{
if ( dp1[ tt] )
ans[ tt] = 1 ;
else ans[ tt] = 0 ;
}
else
{
if ( go.size ( ) )
{
ans[ go[ 0 ] ] = 1 ;
show( go[ 0 ] ) ;
}
REP2( i, 0 , ( int ) go1.size ( ) )
printf( "%d\n " , go1[ i] ) ;
ans[ tt] = 0 ;
}
}
else
{
REP2( i, 0 , ( int ) go1.size ( ) )
printf( "%d\n " , go1[ i] ) ;
if ( go.size ( ) )
{
ans[ go[ 0 ] ] = 0 ;
show( go[ 0 ] ) ;
}
printf( "%d\n " , u) ;
if ( go.size ( ) < 2 )
{
if ( dp1[ tt] )
ans[ tt] = 1 ;
else ans[ tt] = 0 ;
}
else
{
ans[ go[ 1 ] ] = 1 ;
show( go[ 1 ] ) ;
ans[ tt] = 0 ;
}
}
if ( u== n)
break ;
u= tt;
}
return 0 ;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxjc3RkbGliPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTxmc3RyZWFtPgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPGN0aW1lPgojaW5jbHVkZTxzZXQ+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxiaXRzZXQ+CiNpbmNsdWRlPGZ1bmN0aW9uYWw+CiNkZWZpbmUgeCBmaXJzdAojZGVmaW5lIHkgc2Vjb25kCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgUkVQKGksbCxyKSBmb3IoKGkpPShsKTsoaSk8PShyKTsrKyhpKSkKI2RlZmluZSBSRVAyKGksbCxyKSBmb3IoKGkpPShsKTsoaSkhPShyKTsrKyhpKSkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIExMOwp0eXBlZGVmIGRvdWJsZSBsZDsKCmNvbnN0IGludCBNQVg9MTAwMDAwMCsxMDsKCmludCBuOwppbnQgYmVnaW5bTUFYXSxuZXh0W01BWF0sdFtNQVhdLHRvdCxuZVtNQVhdOwoKdm9pZCBhZGQoaW50IGEsaW50IGIpCnsKICAgIHRbKyt0b3RdPWI7CiAgICBuZXh0W3RvdF09YmVnaW5bYV07CiAgICBiZWdpblthXT10b3Q7Cn0KCmludCBoYXNoW01BWF0sZmFbTUFYXTsKaW50IHFbTUFYXSxoZWFkLGVuZDsKCnZvaWQgQkZTKCkKewogICAgaGVhZD0xLGVuZD0xOwogICAgcVtlbmQrK109MTsKICAgIGhhc2hbMV09MTsKICAgIHdoaWxlKGhlYWQ8ZW5kKQogICAgewogICAgICAgIGludCB1PXFbaGVhZCsrXTsKICAgICAgICBmb3IoaW50IGk9YmVnaW5bdV07aTtpPW5leHRbaV0pCiAgICAgICAgewogICAgICAgICAgICBpbnQgdj10W2ldOwogICAgICAgICAgICBpZighaGFzaFt2XSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaGFzaFt2XT0xOwogICAgICAgICAgICAgICAgZmFbdl09dTsKICAgICAgICAgICAgICAgIHFbZW5kKytdPXY7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCi8v5aaC5p6c5LiA5qO15a2Q5qCR6IO95aSf5YWI6K6/6Zeu5qC577yM5YiZ5Y+N6L+H5p2l5b+F5a6a6IO95pyA5ZCO6K6/6Zeu5qC544CC44CCCmludCBjb3VsZFtNQVhdOwoKdm9pZCBmYWlsKCkKewogICAgcHJpbnRmKCJCUkFLXG4iKTsKICAgIGV4aXQoMCk7Cn0Kdm9pZCB3b3JrKGludCB1KQp7CiAgICBpbnQgaTsKICAgIGludCBtdXN0PTA7CiAgICBjb3VsZFt1XT0xOwogICAgZm9yKGk9YmVnaW5bdV07aTtpPW5leHRbaV0pCiAgICB7CiAgICAgICAgaW50IHY9dFtpXTsKICAgICAgICBpZih2PT1mYVt1XSkKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgaWYobmV4dFsgYmVnaW5bdl0gXSkKICAgICAgICAgICAgKyttdXN0OwogICAgICAgIGlmKCFjb3VsZFt2XSkKICAgICAgICAgICAgbXVzdD0yOwogICAgfQogICAgaWYobXVzdD4xKQogICAgICAgIGNvdWxkW3VdPTA7Cn0KCmludCBpc1tNQVhdOwppbnQgZHAwW01BWF0sZHAxW01BWF0sYW5zW01BWF07Cgp2b2lkIHNob3coaW50IHUpCnsKICAgIGludCBpOwogICAgdmVjdG9yPGludD4gZ28sZ28xOwogICAgZm9yKGk9YmVnaW5bdV07aTtpPW5leHRbaV0pCiAgICB7CiAgICAgICAgaW50IHY9dFtpXTsKICAgICAgICBpZih2PT1mYVt1XSkKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgaWYobmV4dFtiZWdpblt2XV0pCiAgICAgICAgICAgIGdvLnBiKHYpOwogICAgICAgIGVsc2UgZ28xLnBiKHYpOwogICAgfQogICAgaWYoZ28uc2l6ZSgpKQogICAgICAgIGFuc1tnb1swXV09YW5zW3VdXjE7CiAgICBpZihhbnNbdV09PTApCiAgICB7CiAgICAgICAgcHJpbnRmKCIlZFxuIix1KTsKICAgICAgICBpZihnby5zaXplKCkpCiAgICAgICAgICAgIHNob3coZ29bMF0pOwogICAgfQogICAgUkVQMihpLDAsKGludClnbzEuc2l6ZSgpKQogICAgICAgIHByaW50ZigiJWRcbiIsZ28xW2ldKTsKICAgIGlmKGFuc1t1XT09MSkKICAgIHsKICAgICAgICBpZihnby5zaXplKCkpCiAgICAgICAgICAgIHNob3coZ29bMF0pOwogICAgICAgIHByaW50ZigiJWRcbiIsdSk7CiAgICB9Cn0KCmludCBtYWluKCkKewojaWZuZGVmIE9OTElORV9KVURHRQovLyAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCJyIixzdGRpbik7ZnJlb3Blbigib3V0cHV0LnR4dCIsInciLHN0ZG91dCk7CiNlbmRpZgogICAgaW50IGk7CiAgICBzY2FuZigiJWQiLCZuKTsKICAgIFJFUChpLDEsbi0xKQogICAgewogICAgICAgIGludCBhLGI7CiAgICAgICAgc2NhbmYoIiVkJWQiLCZhLCZiKTsKICAgICAgICBhZGQoYSxiKTsKICAgICAgICBhZGQoYixhKTsKICAgIH0KICAgIEJGUygpOwogICAgZm9yKGk9bjtpPj0xOy0taSkKICAgIHsKICAgICAgICBpbnQgdD1xW2ldOwogICAgICAgIHdvcmsodCk7CiAgICB9CiAgICBpbnQgdT1uOwogICAgd2hpbGUoMSkKICAgIHsKICAgICAgICBpc1t1XT0xOwogICAgICAgIGlmKHU9PTEpCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIHU9ZmFbdV07CiAgICB9CiAgICBpZihjb3VsZFtuXSkvL+S4jeWFiOi3s+WIsOi/meS4queCueOAguOAggogICAgICAgIGRwMVtuXT0xOwogICAgaWYoIW5leHRbIGJlZ2luW25dIF0pCiAgICAgICAgZHAwW25dPTE7CiAgICB1PWZhW25dOwogICAgaW50IGxhc3Q9bjsKICAgIG5lW3VdPW47CiAgICB3aGlsZSgxKQogICAgewogICAgICAgIGludCBnbz0wLGdvMT0wOwogICAgICAgIGZvcihpPWJlZ2luW3VdO2k7aT1uZXh0W2ldKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHY9dFtpXTsKICAgICAgICAgICAgaWYoaXNbdl0pCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgaWYoIWNvdWxkW3ZdKQogICAgICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICBpZihuZXh0W2JlZ2luW3ZdXSkKICAgICAgICAgICAgICAgICsrZ287CiAgICAgICAgICAgIGVsc2UgKytnbzE7CiAgICAgICAgfQogICAgICAgIGlmKGdvPjIpCiAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICBpZihnbz09MCkKICAgICAgICB7CiAgICAgICAgICAgIGRwMFt1XT0oZ28xP2RwMFtsYXN0XTooZHAwW2xhc3RdIHx8IGRwMVtsYXN0XSkpOwogICAgICAgICAgICBkcDFbdV09ZHAwW2xhc3RdIHx8IGRwMVtsYXN0XTsKICAgICAgICB9CiAgICAgICAgaWYoZ289PTEpCiAgICAgICAgewogICAgICAgICAgICBkcDBbdV09ZHAwW2xhc3RdOwogICAgICAgICAgICBkcDFbdV09ZHAwW2xhc3RdIHx8IGRwMVtsYXN0XTsKICAgICAgICB9CiAgICAgICAgaWYoZ289PTIpCiAgICAgICAgewogICAgICAgICAgICBkcDBbdV09MDsKICAgICAgICAgICAgZHAxW3VdPWRwMFtsYXN0XTsKICAgICAgICB9CiAgICAgICAgaWYodT09MSkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgbGFzdD11OwogICAgICAgIHU9ZmFbdV07CiAgICAgICAgbmVbdV09bGFzdDsKICAgIH0KICAgIGlmKCFkcDBbMV0pCiAgICAgICAgZmFpbCgpOwogICAgdT0xOwogICAgYW5zWzFdPTA7CiAgICB3aGlsZSgxKQogICAgewogICAgICAgIHZlY3RvcjxpbnQ+IGdvLGdvMTsKICAgICAgICBmb3IoaT1iZWdpblt1XTtpO2k9bmV4dFtpXSkKICAgICAgICB7CiAgICAgICAgICAgIGludCB2PXRbaV07CiAgICAgICAgICAgIGlmKGlzW3ZdKQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIGlmKCFuZXh0W2JlZ2luW3ZdXSkKICAgICAgICAgICAgICAgIGdvMS5wYih2KTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZ28ucGIodik7CiAgICAgICAgfQogICAgICAgIGludCB0dD1uZVt1XTsKICAgICAgICBpZihhbnNbdV09PTApCiAgICAgICAgewogICAgICAgICAgICBwcmludGYoIiVkXG4iLHUpOwogICAgICAgICAgICBpZighZ28xLnNpemUoKSAmJiAhZ28uc2l6ZSgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihkcDFbdHRdKQogICAgICAgICAgICAgICAgICAgIGFuc1t0dF09MTsKICAgICAgICAgICAgICAgIGVsc2UgYW5zW3R0XT0wOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoZ28uc2l6ZSgpKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGFuc1tnb1swXV09MTsKICAgICAgICAgICAgICAgICAgICBzaG93KGdvWzBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFJFUDIoaSwwLChpbnQpZ28xLnNpemUoKSkKICAgICAgICAgICAgICAgICAgICBwcmludGYoIiVkXG4iLGdvMVtpXSk7CiAgICAgICAgICAgICAgICBhbnNbdHRdPTA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgUkVQMihpLDAsKGludClnbzEuc2l6ZSgpKQogICAgICAgICAgICAgICAgcHJpbnRmKCIlZFxuIixnbzFbaV0pOwogICAgICAgICAgICBpZihnby5zaXplKCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGFuc1tnb1swXV09MDsKICAgICAgICAgICAgICAgIHNob3coZ29bMF0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHByaW50ZigiJWRcbiIsdSk7CiAgICAgICAgICAgIGlmKGdvLnNpemUoKTwyKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihkcDFbdHRdKQogICAgICAgICAgICAgICAgICAgIGFuc1t0dF09MTsKICAgICAgICAgICAgICAgIGVsc2UgYW5zW3R0XT0wOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYW5zW2dvWzFdXT0xOwogICAgICAgICAgICAgICAgc2hvdyhnb1sxXSk7CiAgICAgICAgICAgICAgICBhbnNbdHRdPTA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYodT09bikKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgdT10dDsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==
compilation info
Traceback (most recent call last):
File "/usr/lib/python3.2/py_compile.py", line 119, in compile
optimize=optimize)
File "./prog.py", line 21
using namespace std;
^
SyntaxError: invalid syntax
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3.2/py_compile.py", line 123, in compile
raise py_exc
py_compile.PyCompileError: File "./prog.py", line 21
using namespace std;
^
SyntaxError: invalid syntax
stdout