#include <bits/stdc++.h>
#define pb push_back

using namespace std;
using ll = long long;
using vi = vector<int>;
using ld = long double;
using pi = pair<int, int>;

vector<vi> g;
vi us;
int ans = 0;

void dfs(int v) {
    us[v] = 1;
    for (int u : g[v]) {
        if (!us[u]) {
            dfs(u);
            ++ans;
        }
    }
}

signed main() {
#ifdef LOCAL
    freopen("input.txt", "r", stdin);
#endif

    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n, m, ggg;
    cin >> n >> m >> ggg;
    us.resize(n);
    g.resize(n);
    // gg.resize(n);
    
    int ans = 0;

    map<pi, int> used;

    for (int i = 0; i < m; ++i) {
        int u, v;
        cin >> u >> v;
        --u; --v;
         pi e = {u, v};
        if (!used[e]) g[u].pb(v);
        // edges.pb({u, v});

       
        // cout << "v " << v - u << endl;
        // if (used[e]) ++ans;

        // if (v - u > 1) ++ans;

        // gg[u].pb(edges.size() - 1);
        // gg[v].pb(edges.size() - 1);
    }

    for (int i = 0; i < n; ++i) {
        if (!us[i]) dfs(i);
    }

    cout << m - ans << endl << 1;
}