#include<bits/stdc++.h>
using namespace std;
int n, m, e[1010][1010];
int a, b;
struct node {
int d;
char ch[10010];
}num[100010];
struct structure {
int cnt;
}ans[100010];
int main() {
memset(ans, 0, sizeof ans);
cin >> n >> m;
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++){
e[i][j] = 0;
}
}
for(int i=1;i<=m;i++) {
cin >> a >> b;
e[a][b] = 1;
e[b][a] = 1;
num[a].d++;
num[b].d++;
num[a].ch[++ans[a].cnt] = b + '0';
num[b].ch[++ans[b].cnt] = a + '0';
}
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) {
cout << e[i][j] << " ";
}
cout << endl;
}
for(int i=1;i<=m;i++) {
cout << num[i].d << " ";
for(int j=1;j<=num[i].d;j++) {
for(int k=1;k<=num[i].d;k++) {
if(num[i].ch[j] < num[i].ch[k]){
char c = num[i].ch[j];
num[i].ch[j] = num[i].ch[k];
num[i].ch[k] = c;
}
}
}
for(int j=1;j<=num[i].d;j++) {
cout << num[i].ch[j] << " ";
}
cout << endl;
}
cout << endl;
return 0;
}