class UnionFind
	def initialize(n)
		@parent = (0..n).to_a
	end

	def unite(x,y)
		rx, ry = x, y
		while @parent[rx] != @parent[ry]
			rx, ry = ry, rx if @parent[rx] > @parent[ry]
			break @parent[rx] = @parent[ry] if rx == @parent[rx]
			@parent[rx], rx = @parent[@parent[ry]], @parent[rx]
		end
	end

	def root(x)
		while x != @parent[x]
			x = @parent[@parent[x]]
		end
	return x
	end
end

N = gets[/.* /].to_i
uf = UnionFind.new(N)
$<.map do |xyz|
	x, y, z = xyz.split.map(&:to_i)
	uf.unite(x,y)
end
p (1..N).map { |x| uf.root(x) }.uniq.size


