#include <iostream>
using namespace std;
int n, m, x, y;
int map[101][101];
int prev[101][101];
void
__read__()
{
cin >> n >> m >> x >> y;
for( int i = 1; i <= n; i++ )
for( int j = 1; j <= n; j++ )
map[i][j] = 9999999;
for( int i = 1; i <= m; i++ )
{
int p, q;
cin >> p >> q;
map[p][q] =
map[q][p] = 1;
}
}
void
__floyd__()
{
for( int k = 1; k <= n; k++ )
for( int i = 1; i <= n; i++ )
for( int j = 1; j <= n; j++ )
if( i != k && j != k && i != j )
if( map[i][j] > map[i][k] + map[k][j] )
{
map[i][j] = map[i][k] + map[k][j];
prev[i][j] = k;
}
}
void
__outp__( int start )
{
if( start != 0 )
{
__outp__( prev[x][start] );
cout << "->" << start;
}
}
int
main()
{
__read__();
__floyd__();
cout << x; __outp__( prev[x][y] ); cout << "->" << y << endl;
return 0;
}