#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 2005;
struct edge {
int to, next;
} w[maxn * 10];
int h[maxn], dfn[maxn], cnt = 0, low[maxn], n, m, scc, prt[maxn], num[maxn], stk[maxn], sign, f[maxn], my, mark[maxn][maxn], ans, root, son, bj, a, b;
bool vis[maxn];
void add(int x, int y) {
w[++cnt].to = y;
w[cnt].next = h[x];
h[x] = cnt;
w[++cnt].to = x;
w[cnt].next = h[y];
h[y] = cnt;
}
void dfs(int u) {
sign++;
dfn[u] = low[u] = sign;
for (int v = h[u]; v; v = w[u].next) {
int nxt = w[v].to;
if (prt[u] != nxt) {
if (!dfn[nxt]) {
prt[nxt] = u;
dfs(nxt);
low[u] = min(low[u], low[nxt]);
if (low[nxt] >= dfn[u]) {
mark[u][nxt] = 1;
}
} else {
low[u] = min(low[u], dfn[nxt]);
}
}
}
}
signed main() {
cin >> n >> m;
int x, y;
for (int i = 1; i <= m; i++) {
cin >> x >> y;
add(x, y);
}
dfs(1);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cout << i << " " << j << "\n";
}
}
return 0;
}