#include <bits/stdc++.h>
using namespace std;
const int maxn = 200010;
int n, m, k;
vector<int> G[maxn];
vector<int> vec[maxn];
int vis[maxn];
int cnt;
int MAX;
inline void add(int u) {
  vec[cnt].push_back(u);
  if ((int)vec[cnt].size() == MAX) cnt++;
}
void dfs(int u) {
  vis[u] = 1;
  add(u);
  for (int i = 0; i < (int)G[u].size(); i++) {
    int v = G[u][i];
    if (vis[v]) continue;
    dfs(v);
    add(u);
  }
}
int main() {
  int u, v;
  scanf("%d %d %d", &n, &m, &k);
  MAX = (2 * n - 1) / k + 1;
  while (m--) {
    scanf("%d %d", &u, &v);
    G[u].push_back(v);
    G[v].push_back(u);
  }
  dfs(1);
  for (int i = 0; i < k; i++) {
    if (vec[i].size() == 0)
      puts("1 1");
    else {
      printf("%d ", vec[i].size());
      for (int j = 0; j < (int)vec[i].size(); j++) printf("%d ", vec[i][j]);
      puts("");
    }
  }
  return 0;
}
