イクタ君の住む町にはN個の塔がある。 それぞれの塔には0からN−1までの異なる番号が与えられており、番号iの塔を塔iと呼ぶ。 好奇心旺盛なイクタ君はN個の塔の高さに興味を持ち、それらの大小関係を表す表Tを作ることにした。 TはN × N個の要素を持ち、各要素Ti, j (0 ≤ i, j ≤ N − 1)は次のように定義される。
イクタ君は表Tを作成するための調査として、2つの塔を選びそれらの高さを比較するということをN−1回繰り返した。
イクタ君の調査に関して以下のことがわかっている。
残念ながらイクタ君の調査による情報だけで表Tの内容を一意に決めることができるとは限らない。 表Tがイクタ君の調査と矛盾せず、Tが定義されるような塔の高さの組み合わせが存在するときTを正しい表と呼ぶことにする。 正しい表として何通りのものが考えられるかを計算してイクタ君に教えて欲しい。
ただし、比較された2つの塔の高さは互いに異なるがすべての塔の高さが互いに異なるとは限らない。
入力は以下の形式で与えられる。
N
a1 b1
...
aN−1 bN−1
Nは塔の数を表す。 ai, bi (1 ≤ i ≤ N − 1)は塔aiが塔biより高いことを表す。
入力中の各変数は以下の制約を満たす。
考えられる正しい表Tの個数の数を1,000,000,007で割ったあまりを出力せよ。
3 0 1 1 2
1
3 0 1 0 2
3
1
1
7 0 1 1 2 2 3 3 4 0 5 0 6
91