#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m, k;
cin >> n >> m >> k;
vector<vector<int>> adj(n+1);
for(int i = 0; i < m; i++){
int u,v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
// 1) Build an Euler-tour that records only real moves
vector<bool> seen(n+1,false);
vector<int> euler;
euler.reserve(2*n);
// stack entries: (node u, parent p, next-child index ci)
vector<array<int,3>> st;
st.reserve(n);
st.push_back({1,0,0});
seen[1]=true;
euler.push_back(1);
while(!st.empty()){
auto &top = st.back();
int u = top[0], p = top[1], &ci = top[2];
if(ci < (int)adj[u].size()){
int v = adj[u][ci++];
if(!seen[v]){
// move u -> v
seen[v]=true;
euler.push_back(v);
st.push_back({v,u,0});
}
} else {
// done with u's children, pop back to parent
st.pop_back();
if(!st.empty()){
int par = st.back()[0];
euler.push_back(par); // actual move v->par
}
}
}
// 2) Slice into exactly k routes of length ≤ ceil(|euler|/k)
int S = euler.size(); // ≤ 2n-1
int limit = (S + k - 1) / k; // ceil division
int p = 0;
for(int i = 0; i < k; i++){
if(p < S){
int sz = min(limit, S - p);
cout << sz;
for(int j = 0; j < sz; j++, p++){
cout << ' ' << euler[p];
}
cout << "\n";
} else {
// no more moves left: just stay at 1
cout << "1 1\n";
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBpbnQgbiwgbSwgazsKICAgIGNpbiA+PiBuID4+IG0gPj4gazsKCiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGFkaihuKzEpOwogICAgZm9yKGludCBpID0gMDsgaSA8IG07IGkrKyl7CiAgICAgICAgaW50IHUsdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIGFkalt1XS5wdXNoX2JhY2sodik7CiAgICAgICAgYWRqW3ZdLnB1c2hfYmFjayh1KTsKICAgIH0KCiAgICAvLyAxKSBCdWlsZCBhbiBFdWxlci10b3VyIHRoYXQgcmVjb3JkcyBvbmx5IHJlYWwgbW92ZXMKICAgIHZlY3Rvcjxib29sPiBzZWVuKG4rMSxmYWxzZSk7CiAgICB2ZWN0b3I8aW50PiBldWxlcjsKICAgIGV1bGVyLnJlc2VydmUoMipuKTsKCiAgICAvLyBzdGFjayBlbnRyaWVzOiAobm9kZSB1LCBwYXJlbnQgcCwgbmV4dC1jaGlsZCBpbmRleCBjaSkKICAgIHZlY3RvcjxhcnJheTxpbnQsMz4+IHN0OwogICAgc3QucmVzZXJ2ZShuKTsKICAgIHN0LnB1c2hfYmFjayh7MSwwLDB9KTsKICAgIHNlZW5bMV09dHJ1ZTsKICAgIGV1bGVyLnB1c2hfYmFjaygxKTsKCiAgICB3aGlsZSghc3QuZW1wdHkoKSl7CiAgICAgICAgYXV0byAmdG9wID0gc3QuYmFjaygpOwogICAgICAgIGludCB1ID0gdG9wWzBdLCBwID0gdG9wWzFdLCAmY2kgPSB0b3BbMl07CgogICAgICAgIGlmKGNpIDwgKGludClhZGpbdV0uc2l6ZSgpKXsKICAgICAgICAgICAgaW50IHYgPSBhZGpbdV1bY2krK107CiAgICAgICAgICAgIGlmKCFzZWVuW3ZdKXsKICAgICAgICAgICAgICAgIC8vIG1vdmUgdSAtPiB2CiAgICAgICAgICAgICAgICBzZWVuW3ZdPXRydWU7CiAgICAgICAgICAgICAgICBldWxlci5wdXNoX2JhY2sodik7CiAgICAgICAgICAgICAgICBzdC5wdXNoX2JhY2soe3YsdSwwfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBkb25lIHdpdGggdSdzIGNoaWxkcmVuLCBwb3AgYmFjayB0byBwYXJlbnQKICAgICAgICAgICAgc3QucG9wX2JhY2soKTsKICAgICAgICAgICAgaWYoIXN0LmVtcHR5KCkpewogICAgICAgICAgICAgICAgaW50IHBhciA9IHN0LmJhY2soKVswXTsKICAgICAgICAgICAgICAgIGV1bGVyLnB1c2hfYmFjayhwYXIpOyAgLy8gYWN0dWFsIG1vdmUgdi0+cGFyCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gMikgU2xpY2UgaW50byBleGFjdGx5IGsgcm91dGVzIG9mIGxlbmd0aCDiiaQgY2VpbCh8ZXVsZXJ8L2spCiAgICBpbnQgUyA9IGV1bGVyLnNpemUoKTsgICAgICAgICAgICAgICAgICAgLy8g4omkIDJuLTEKICAgIGludCBsaW1pdCA9IChTICsgayAtIDEpIC8gazsgICAgICAgICAgICAvLyBjZWlsIGRpdmlzaW9uCgogICAgaW50IHAgPSAwOwogICAgZm9yKGludCBpID0gMDsgaSA8IGs7IGkrKyl7CiAgICAgICAgaWYocCA8IFMpewogICAgICAgICAgICBpbnQgc3ogPSBtaW4obGltaXQsIFMgLSBwKTsKICAgICAgICAgICAgY291dCA8PCBzejsKICAgICAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IHN6OyBqKyssIHArKyl7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICcgJyA8PCBldWxlcltwXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb3V0IDw8ICJcbiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gbm8gbW9yZSBtb3ZlcyBsZWZ0OiBqdXN0IHN0YXkgYXQgMQogICAgICAgICAgICBjb3V0IDw8ICIxIDFcbiI7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwp9Cg==