#include <bits/stdc++.h>

using namespace std;

template<typename T>
istream& operator>>(istream& is, vector<T>& a) {
    for (auto& x : a) is >> x;
    return is;
}
template<typename T>
ostream& operator<<(ostream& is, vector<T>& a) {
    for (auto& x : a) is << x << ' ';
    cout << '\n';
    return is;
}

template<typename T1, typename T2>
istream& operator>>(istream& is, vector<pair<T1, T2>>& a) {
    for (auto& x : a) is >> x.first >> x.second;
    return is;
}

template<typename T1, typename T2>
ostream& operator<<(ostream& is, vector<pair<T1, T2>>& a) {
    for (auto& x : a) is << x.first << ' ' << x.second << '\n';
    return is;
}


template<typename T1, typename T2>
void amax(T1& a, T2 b) {
    a = max(a, b);
}
template<typename T1, typename T2>
void amin(T1& a, T2 b) {
    a = min(a, b);
}
#ifdef OTKR
bool local = true;
#else
bool local = false;
#endif // OTKR

#define int long long
#define sz(x) (int)(x.size())
#define all(x) x.begin(), x.end()
#define ff first
#define ss second
#define pb emplace_back
#define push emplace

void solve();
void stress();
void precalc();

using vi = vector<int>;
using pi = pair<int, int>;
using vpi = vector<pi>;
using vvi = vector<vi>;
using vvpi = vector<vpi>;

const int ma = 3e5;
const int INF = 1e18;
const int mod = 1e9 + 7;

struct Mint{
    int x;
    Mint() : x(0) {}
    Mint(int x) : x(x) {}
    Mint operator+(const Mint& b) const {
        int res = x + b.x;
        if (res >= mod) res -= mod;
        return {res};
    }
    Mint operator-(const Mint& b) const {
        int res = x - b.x;
        if (res < 0) res += mod;
        return {res};
    }
    Mint operator*(const Mint& b) const {
        return {x * b.x % mod};
    }
    Mint operator==(const Mint& b) const {
        return x == b.x;
    }
};

struct Segtree{
    struct Node{
        int su;
        int mi;
        int indmi;
        Node operator+(const Node& b) const {
            Node res;

            return res;
        }
    };
    Node Make(int x, int i) {
        Node res;

        return res;
    }
    Node N;
    vector<Node> t;
    void build(int v, int l, int r,const vi& a) {
        if (l + 1 == r) {
            t[v] = Make(a[l], l);
        }
        int m = (l + r) / 2;
        build(v * 2, l, m, a);
        build(v * 2 + 1, m, r, a);
        t[v] = t[v * 2] + t[v * 2 + 1];
    }
    Segtree(const vi& a) : t(4 * sz(a)) {
        build(1, 0, sz(a), a);
    }
    void upd(int v, int l, int r, int i, int x) {
        if (l + 1 == r) {
            t[v] = Make(x, l);
        }
        int m = (l + r) / 2;
        if (i < m) {
            upd(v * 2, l, m, i, x);
        } else {
            upd(v * 2 + 1, m, r, i, x);
        }
        t[v] = t[v * 2] + t[v * 2 + 1];
    }
    Node get(int v, int nl, int nr, int ql, int qr) {
        if (nl >= qr || nr <= ql) return N;
        if (ql <= nl && nr <= qr) return t[v];
        int m = (nl + nr) / 2;
        return get(v * 2, nl, m, ql, qr) + get(v * 2 + 1, m, nr, ql, qr);
    }
};

signed main() {
    if (local) {
        freopen("input.txt", "r", stdin);
    }
    int t = 1; //cin >> t;
    while (t--) {
        solve();
    }
}

void solve() {
    int n, m, g; cin >> n >> m >> g;
    vvi adj(n), radj(n);
    for (int i = 0; i < m; i++) {
        int x, y; cin >> x >> y;
        adj[--x].pb(--y);
        radj[y].pb(x);
    }

    cout << m - n << "\n228";
}









