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)