#include <bits/stdc++.h>
using namespace std;
int main() {
int n, e; // n = number of nodes, e = number of edges
cin >> n >> e;
// Create an adjacency list of size n+1 (1-based indexing)
vector<vector<int>> adjList(n + 1);
// Read edges and fill adjacency list
for (int i = 0; i < e; i++) {
int u, v;
cin >> u >> v;
adjList[u].push_back(v); // edge from u to v
adjList[v].push_back(u); // for undirected graph
}
// Print adjacency list
cout << "Adjacency List:\n";
for (int i = 1; i <= n; i++) {
cout << i << " -> ";
for (int neighbor : adjList[i]) {
cout << neighbor << " ";
}
cout << endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBuLCBlOyAgLy8gbiA9IG51bWJlciBvZiBub2RlcywgZSA9IG51bWJlciBvZiBlZGdlcwogICAgY2luID4+IG4gPj4gZTsKCiAgICAvLyBDcmVhdGUgYW4gYWRqYWNlbmN5IGxpc3Qgb2Ygc2l6ZSBuKzEgKDEtYmFzZWQgaW5kZXhpbmcpCiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGFkakxpc3QobiArIDEpOwoKICAgIC8vIFJlYWQgZWRnZXMgYW5kIGZpbGwgYWRqYWNlbmN5IGxpc3QKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZTsgaSsrKSB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBhZGpMaXN0W3VdLnB1c2hfYmFjayh2KTsgIC8vIGVkZ2UgZnJvbSB1IHRvIHYKICAgICAgICBhZGpMaXN0W3ZdLnB1c2hfYmFjayh1KTsgIC8vIGZvciB1bmRpcmVjdGVkIGdyYXBoCiAgICB9CgogICAgLy8gUHJpbnQgYWRqYWNlbmN5IGxpc3QKICAgIGNvdXQgPDwgIkFkamFjZW5jeSBMaXN0OlxuIjsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNvdXQgPDwgaSA8PCAiIC0+ICI7CiAgICAgICAgZm9yIChpbnQgbmVpZ2hib3IgOiBhZGpMaXN0W2ldKSB7CiAgICAgICAgICAgIGNvdXQgPDwgbmVpZ2hib3IgPDwgIiAiOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9Cn0=