/*
B
Cho một đồ thị vô hướng gồm n đỉnh và m cạnh, biểu diễn đồ thị này bằng một danh sách kề
- Vẫn nhập u-v từ input, nhưng thay vì ma trận kề
- Mình có một vector<int> G[N] (nói cách khác là mình sẽ có N cái vector để biểu diễn ma trận kề)
- G[u] = {Tập hợp chứa các đỉnh v mà từ u có thể đi tới}.
*/
// ~~ icebear ~~
#include <bits/stdc++.h>
using namespace std;
vector<int> G[300005];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n, m;
cin >> n >> m;
while(m--) {
int u, v;
cin >> u >> v;
G[u].push_back(v);
G[v].push_back(u);
}
for(int i = 1; i <= n; i++) {
// Có 2 cách duyệt vector
cout << G[i].size() << ' ';
// c1: duyệt theo chỉ số
// for(int j = 0; j < (int)G[i].size(); j++) cout << G[i][j] << ' ';
// c2 : duyệt dùng con trỏ
for(int j : G[i]) cout << j << ' '; // lúc này thì j chính là một giá trị trong G[i]
cout << '\n';
}
return 0;
}
LyoKQgpDaG8gbeG7mXQgxJHhu5MgdGjhu4sgdsO0IGjGsOG7m25nIGfhu5NtIG4gxJHhu4luaCB2w6AgbSBj4bqhbmgsIGJp4buDdSBkaeG7hW4gxJHhu5MgdGjhu4sgbsOgeSBi4bqxbmcgbeG7mXQgZGFuaCBzw6FjaCBr4buBCgktIFbhuqtuIG5o4bqtcCB1LXYgdOG7qyBpbnB1dCwgbmjGsG5nIHRoYXkgdsOsIG1hIHRy4bqtbiBr4buBCgktIE3DrG5oIGPDsyBt4buZdCB2ZWN0b3I8aW50PiBHW05dIChuw7NpIGPDoWNoIGtow6FjIGzDoCBtw6xuaCBz4bq9IGPDsyBOIGPDoWkgdmVjdG9yIMSR4buDIGJp4buDdSBkaeG7hW4gbWEgdHLhuq1uIGvhu4EpCgktIEdbdV0gPSB7VOG6rXAgaOG7o3AgY2jhu6lhIGPDoWMgxJHhu4luaCB2IG3DoCB04burIHUgY8OzIHRo4buDIMSRaSB04bubaX0uCiovCgovLyB+fiBpY2ViZWFyIH5+CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2ZWN0b3I8aW50PiBHWzMwMDAwNV07CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGludCBuLCBtOwogICAgY2luID4+IG4gPj4gbTsKICAgIHdoaWxlKG0tLSkgewogICAgICAgIGludCB1LCB2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgR1t1XS5wdXNoX2JhY2sodik7CiAgICAgICAgR1t2XS5wdXNoX2JhY2sodSk7CiAgICB9CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICAvLyBDw7MgMiBjw6FjaCBkdXnhu4d0IHZlY3RvcgogICAgICAgIGNvdXQgPDwgR1tpXS5zaXplKCkgPDwgJyAnOwoKICAgICAgICAvLyBjMTogZHV54buHdCB0aGVvIGNo4buJIHPhu5EKLy8gICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCAoaW50KUdbaV0uc2l6ZSgpOyBqKyspIGNvdXQgPDwgR1tpXVtqXSA8PCAnICc7CgogICAgICAgIC8vIGMyIDogZHV54buHdCBkw7luZyBjb24gdHLhu48KICAgICAgICBmb3IoaW50IGogOiBHW2ldKSBjb3V0IDw8IGogPDwgJyAnOyAvLyBsw7pjIG7DoHkgdGjDrCBqIGNow61uaCBsw6AgbeG7mXQgZ2nDoSB0cuG7iyB0cm9uZyBHW2ldCiAgICAgICAgY291dCA8PCAnXG4nOwogICAgfQogICAgcmV0dXJuIDA7Cn0K