n, k = gets.split.map(&:to_i)
edge = Array.new(n+1){[]}
(n-1).times do
    a, b = gets.split.map(&:to_i)
    edge[a] << b
    edge[b] << a
end

m = 10 ** 9 + 7

stack = [[1, 0, 0]]
ans = 1
while x = stack.pop
    now, par, s = x
    ans = ans * (k - s) % m

    i = par == 0 ? 1 : 2
    edge[now].each do |y|
        next if y == par
        stack << [y, now, i]
        i += 1
    end
end

puts ans