#include <bits/stdc++.h>
using namespace std ;
int n , m , fa[200] , q[5005][3];
struct jgt{
int x ;
int y ;
}a[5005];
vector <jgt> ans ;
bool cmp ( jgt a , jgt b ){
if( a.x != b.x ){
return a.x < b.x ;
}else{
return a.y < b.y ;
}
}
int find_root( int a ){
if( fa[a] == a ){
return a ;
}
return fa[a] = find_root(fa[a]) ;
}
void make_together( int a , int b ){
fa[find_root(a)] = find_root(b) ;
return ;
}
int main(){
scanf("%d%d" , &n , &m );
for( int i = 1 ; i <= m ; i ++){
int xx , yy ;
scanf("%d%d" , &xx , &yy );
a[i].x = min( xx , yy ) ;
a[i].y = max( xx , yy ) ;
}
for( int i = 1 ; i <= m ; i ++ ){
for( int j = 1 ; j <= n ; j ++ ){
fa[i] = i ;
}
for( int j = 1 ; j <= m ; j ++ ){
if( i == j ){
continue ;
}
if(find_root(a[j].x) != find_root(a[j].y ) ){
fa[find_root(a[j].x)] = find_root(a[j].y) ;
}
}
int x = find_root(1);
for( int j = 2 ; j <= n ; j ++ ){
if( x != find_root(j)){
ans.push_back(a[i]) ;
break ;
}
}
}
int len = ans.size() ;
sort( ans.begin() , ans.end() , cmp );
for( int i = 0 ; i < len ; i ++ ){
printf("%d %d\n" , ans[i].x , ans[i].y );
}
return 0 ;
}