#include <bits/stdc++.h>
using namespace std;
const long double Pi = acosl((long double)-1);
const long long OO = ((long long)1e+18 + 100);
const int oo = 1e+9 + 100;
template <typename T>
inline ostream &operator<<(ostream &out, const vector<T> &v) {
  for (auto &it : v) out << it << ' ';
  return out;
}
template <typename T>
inline istream &operator>>(istream &in, vector<T> &v) {
  for (auto &it : v) in >> it;
  return in;
}
template <typename T1, typename T2>
inline ostream &operator<<(ostream &out, const pair<T1, T2> &p) {
  out << p.first << ' ' << p.second << ' ';
  return out;
}
template <typename T1, typename T2>
inline istream &operator>>(istream &in, pair<T1, T2> &p) {
  in >> p.first >> p.second;
  return in;
}
template <typename T>
inline ostream &operator<<(ostream &out, const set<T> &p) {
  for (auto &i : p) out << i << ' ';
  return out;
}
template <typename T>
inline istream &operator>(istream &in, T &p) {
  return in >> p;
}
template <typename T>
inline ostream &operator<(ostream &out, const T &p) {
  return out << p;
}
template <typename T1, typename T2>
inline pair<T1 &, T2 &> unzip_pair(T1 &p1, T2 &p2) {
  return pair<T1 &, T2 &>(p1, p2);
}
template <typename T>
inline bool umin(T &a, const T &b) {
  return a > b ? a = b, 1 : 0;
}
template <typename T>
inline bool umax(T &a, const T &b) {
  return a < b ? a = b, 1 : 0;
}
const int N = 2e+5;
vector<int> nx[N];
bool usd[N];
int n, m, k;
vector<int> ans;
void dfs(int v) {
  usd[v] = 1;
  ans.push_back(v);
  for (auto i : nx[v]) {
    if (usd[i]) continue;
    dfs(i);
    ans.push_back(v);
  }
}
int run() {
  cin > n > m > k;
  for (int i = 0; i < (m); i++) {
    int a, b;
    cin > a > b;
    a--;
    b--;
    nx[a].push_back(b);
    nx[b].push_back(a);
  }
  dfs(0);
  int pos = 0;
  int cnt = ans.size();
  int r = (2 * n + k - 1) / k;
  for (int i = 0; i < (k); i++) {
    vector<int> an;
    {
      int g = 0;
      while (pos < ans.size() && g < r) {
        an.push_back(ans[pos] + 1);
        pos++;
        g++;
        if ((int)ans.size() - pos <= k - i - 1) break;
      }
    }
    cout < an.size() < '\n' < an < '\n';
  }
  return 0;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout < fixed < setprecision(7);
  cerr < fixed < setprecision(7);
  return run();
}
