import sys
input_data = list(map(int, sys.stdin.read().split()))
num_vertices, num_edges = input_data[0], input_data[1]
parent = list(range(num_vertices + 1))
comp_vertices = [1] * (num_vertices + 1)
comp_edgs = [0] * (num_vertices + 1)
def find_root(vertex):
while vertex != parent[vertex]:
parent[vertex] = parent[parent[vertex]]
vertex = parent[vertex]
return vertex
for i in range(2, 2 * num_edges + 2, 2):
u, v = input_data[i], input_data[i + 1]
root_u, root_v = find_root(u), find_root(v)
if root_u != root_v:
parent[root_u] = root_v
comp_vertices[root_v] += comp_vertices[root_u]
comp_edgs[root_v] += comp_edgs[root_u]
comp_edgs[root_v] += 1
comp_roots = [v for v in range(1, num_vertices + 1) if parent[v] == v]
tree_count = sum(comp_edgs[r] == comp_vertices[r] - 1 for r in comp_roots)
total_comp = len(comp_roots)
print(total_comp, tree_count)