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


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

parent = list(range(n + 1))

def find_root(x):
    while parent[x] != x:
        parent[x] = parent[parent[x]]
        x = parent[x]
    return x

edges_list = []
for i in range(m):
    a, b = map(int, input().split())
    edges_list.append(a)
    ra = find_root(a)
    rb = find_root(b)
    if ra != rb:
        parent[ra] = rb

verts = [0] * (n + 1)
edges = [0] * (n + 1)

for v in range(1, n + 1):
    verts[find_root(v)] += 1

for a in edges_list:
    edges[find_root(a)] += 1

components = 0
trees = 0

for v in range(1, n + 1):
    if find_root(v) == v:
        components += 1
        if edges[v] == verts[v] - 1:
            trees += 1

print(components, trees)