#include <bits/stdc++.h>
using namespace std;
void GO() {
  ios_base::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
}
const long long INF = 1e9 + 7;
const long long mod = (1e9);
const int maxn = (int)4000;
const long double PI = acos(-1.0);
const long double eps = 0.000000001;
mt19937 rnd(time(0));
vector<vector<int> > g;
vector<int> u;
vector<int> mas;
void dfs(int v) {
  u[v] = 1;
  mas.push_back(v);
  for (auto to : g[v]) {
    if (u[to]) continue;
    dfs(to), mas.push_back(v);
  }
}
void solve() {
  int n, m, k;
  cin >> n >> m >> k;
  long long mx = (2 * n + k - 1) / k;
  g.resize(n), u.resize(n);
  for (int i = 0; i < m; ++i) {
    int a, b;
    cin >> a >> b;
    a--, b--;
    g[a].push_back(b), g[b].push_back(a);
  }
  dfs(0);
  vector<vector<int> > ans(k);
  int ost = mx, timer = 0;
  for (int i = 0; i < int(mas.size()); ++i) {
    if (ost) {
      ost--;
      ans[timer].push_back(mas[i]);
    } else {
      ost = mx - 1, timer++;
      ans[timer].push_back(mas[i]);
    }
  }
  timer++;
  while (timer < k) ans[timer++].push_back(mas.back());
  for (int i = 0; i < k; ++i) {
    cout << int(ans[i].size()) << ' ';
    for (auto &j : ans[i]) cout << j + 1 << ' ';
    cout << '\n';
  }
}
signed main() {
  GO();
  int Q = 1;
  while (Q--) {
    solve();
  }
}
