#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n, m; // n:顶点数, m:边数
    cin >> n >> m;
    
    vector<vector<int>> adj(n+1);
    
    // 构建无向图
    for(int i =1; i <= m; i++) {
        int u, v;
        cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u); // 无向图需要双向添加
    }
    
    // 遍历邻接表
    for(int i = 1; i <= n; i++) {
        if(adj[i].empty()){
            cout<<"None";
        }
        sort(adj[i].begin(), adj[i].end());
        for(int neighbor : adj[i]) {
            cout << neighbor << " ";
        }
        cout << endl;
    }
    
    return 0;
}