
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,n) for(long long i=0; i<(n); i++)
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }

ll cnt = 0;
vector<pair<ll,ll>> res;
vector<ll> ord(100005, -1), pre(100005, -1);
vector<vector<ll>> edge(100005);

void dfs(ll i, ll j){
    ord[i] = cnt;
    pre[i] = cnt;
    cnt++;
    for(ll x : edge[i]){
        if(x == j) continue;
        if(ord[x] > -1) chmin(pre[i], pre[x]);
        else dfs(x, i);
    }
    if(j > -1) chmin(pre[j], pre[i]);
    if(j > -1 && pre[i] > ord[j]) res.push_back({min(i, j), max(i, j)});
    return;
}

int main(){
    ll v,e; cin>>v>>e;
    rep(i, e){
        ll s,t; 
        cin>>s>>t;
        edge[s].push_back(t);
        edge[t].push_back(s);
    }
    vector<ll> ord(v, -1), pre(v, -1);
    dfs(0, -1);
    sort(res.begin(), res.end());
    for(pair<ll,ll> p : res){
        cout<<p.first<<' '<<p.second<<endl;
    }

    return 0;
}
