Загрузка данных


n, m = map(int, input().split())

g = [[] for _ in range(n)]

for _ in range(m):

    u, v = map(int, input().split())

    u -= 1

    v -= 1

    g[u].append(v)

    g[v].append(u)

used = [False] * n

components = 0

trees = 0

for start in range(n):

    if used[start]:

        continue

    components += 1

    stack = [start]

    used[start] = True

    vertices = 0

    degree_sum = 0

    while stack:

        v = stack.pop()

        vertices += 1

        degree_sum += len(g[v])

        for to in g[v]:

            if not used[to]:

                used[to] = True

                stack.append(to)

    edges = degree_sum // 2

    if edges == vertices - 1:

        trees += 1

print(components, trees)