#include <bits/stdc++.h>
using namespace std;
int main() {
int n, e;
cin >> n >> e;
// Create n x n matrix filled with 0
vector<vector<int>> adj(n + 1, vector<int>(n + 1, 0));
// Read edges and fill matrix
for (int i = 0; i < e; i++) {
int u, v;
cin >> u >> v;
adj[u][v] = 1; // edge from u to v
adj[v][u] = 1; // for undirected graph
}
// Print adjacency matrix
cout << "Adjacency Matrix:\n";
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cout << adj[i][j] << " ";
}
cout << endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBuLCBlOwogICAgY2luID4+IG4gPj4gZTsKCiAgICAvLyBDcmVhdGUgbiB4IG4gbWF0cml4IGZpbGxlZCB3aXRoIDAKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gYWRqKG4gKyAxLCB2ZWN0b3I8aW50PihuICsgMSwgMCkpOwoKICAgIC8vIFJlYWQgZWRnZXMgYW5kIGZpbGwgbWF0cml4CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGU7IGkrKykgewogICAgICAgIGludCB1LCB2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgYWRqW3VdW3ZdID0gMTsgICAvLyBlZGdlIGZyb20gdSB0byB2CiAgICAgICAgYWRqW3ZdW3VdID0gMTsgICAvLyBmb3IgdW5kaXJlY3RlZCBncmFwaAogICAgfQoKICAgIC8vIFByaW50IGFkamFjZW5jeSBtYXRyaXgKICAgIGNvdXQgPDwgIkFkamFjZW5jeSBNYXRyaXg6XG4iOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gbjsgaisrKSB7CiAgICAgICAgICAgIGNvdXQgPDwgYWRqW2ldW2pdIDw8ICIgIjsKICAgICAgICB9CiAgICAgICAgY291dCA8PCBlbmRsOwogICAgfQp9