#include #include #include #include #define pb push_back using namespace std; typedef pair PII; const int maxN = 1000 * 1000 + 5; int root[maxN]; int h[maxN]; int getroot(int x) { return x == root[x] ? x : (root[x] = getroot(root[x]));} bool join(int u, int v) // union { u = getroot(u); v = getroot(v); if (u == v) return 0; if (h[u] > h[v]) swap(u, v); root[u] = v; h[v] = max(h[v], h[u] + 1); return 1; } int main() { int n, m, k; vector edge; scanf("%d%d%d", &n, &m, &k); for (int i = 0; i < n; i++) root[i] = i; for (int i = 0; i < m; i++) { int u, v; scanf("%d%d", &u, &v); u--; v--; // 0 base if (u > v) swap(u, v); if (u > k - 1) join(u, v); // yal hayi ke u > k-1 va v > k-1 ro dar nazar migirim else edge.pb(make_pair(u, v)); } vector ans; for (int i = 0; i < (int)edge.size(); i++) if (!join(edge[i].first, edge[i].second)) // agar dor be vojood mioomad yal ra hazv mikonim ans.pb(edge[i]); printf("%d\n", ans.size()); for (int i = 0; i < (int)ans.size(); i++) printf("%d %d\n", ans[i].first+1, ans[i].second+1); return 0; }