#include<cstdio>
#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
int n,m;
const int maxn=156;
vector<int>g[maxn];
vector<int>p[maxn];
int pp=0;
struct node {
int u,v;
};
bool cmp(node a,node b) {
if(a.u !=b.u ) {
return a.u <b.u ;
} else {
return a.v <b.v;
}
};
node a[5000];
bool bfs(int u,int v) {
int vis[maxn];
queue<int>q;
q.push(u);
vis[u]=1;
while(!q.empty()) {
int s=q.front() ;
q.pop() ;
vis[s]=1;
for(int i=0; i<g[s].size(); i++) {
int f=g[s][i];
if((s==u&&f==v)||(s==v&&f==u)||vis[f])continue;
if(f==v) {
return false;
}
vis[f]=1;
q.push(f);
}
}
if(vis[v])
return false;
return true;
}
int main() {
scanf("%d%d",&n,&m);
for(int i=1; i<=m; i++) {
int u,v;
scanf("%d%d",&u,&v);
g[u].push_back(v);
g[v].push_back(u);
p[u].push_back(v);
}
for(int i=1; i<=n; i++) {
for(int j=0; j<p[i].size(); j++) {
if(bfs(i,p[i][j])) {
pp++;
a[pp].u =i;
a[pp].v =p[i][j];
}
}
}
sort(a+1,a+1+pp,cmp);
for(int i=1; i<=pp; i++) {
printf("%d%2d\n",a[i].u ,a[i].v );
}
return 0;
}