CF BUDDY
← Problems·

1491E · Fib-tree

2400 · brute force, dfs and similar, divide and conquer

Problem: Let FkF_k denote the kk-th term of Fibonacci sequence, defined as below:

  • F0=F1=1F_0 = F_1 = 1
  • for any integer n0n \geq 0, Fn+2=Fn+1+FnF_{n+2} = F_{n+1} + F_n

You are given a tree with nn vertices. Recall that a tree is a connected undirected graph without cycles.

We call a tree a Fib-tree, if its number of vertices equals FkF_k for some kk, and at least one of the following conditions holds:

  • The tree consists of only 11 vertex;
  • You can divide it into two Fib-trees by removing some edge of the tree.

Determine whether the given tree is a Fib-tree or not.

Input Format: The first line of the input contains a single integer nn (1n21051 \leq n \leq 2 \cdot 10^5) — the number of vertices in the tree.

Then n1n-1 lines follow, each of which contains two integers uu and vv (1u,vn1\leq u,v \leq n, uvu \neq v), representing an edge between vertices uu and vv. It's guaranteed that given edges form a tree.

Output Format: Print "YES" if the given tree is a Fib-tree, or "NO" otherwise.

You can print your answer in any case. For example, if the answer is "YES", then the output "Yes" or "yeS" will also be considered as correct answer.

Note: In the first sample, we can cut the edge (1,2)(1, 2), and the tree will be split into 22 trees of sizes 11 and 22 correspondently. Any tree of size 22 is a Fib-tree, as it can be split into 22 trees of size 11.

In the second sample, no matter what edge we cut, the tree will be split into 22 trees of sizes 11 and 44. As 44 isn't FkF_k for any kk, it's not Fib-tree.

In the third sample, here is one possible order of cutting the edges so that all the trees in the process are Fib-trees: (1,3),(1,2),(4,5),(3,4)(1, 3), (1, 2), (4, 5), (3, 4).

Sample Cases

Case 1

Input

3
1 2
2 3

Output

YES

Case 2

Input

5
1 2
1 3
1 4
1 5

Output

NO

Case 3

Input

5
1 3
1 2
4 5
3 4

Output

YES

Similar problems

00:00:00
Loading editor…
Welcome! I'm your coding tutor for this problem. Use the chips below to reveal stored hints or get AI feedback on your code. I'll guide you step by step — never giving away the solution.

Sign in to unlock AI tutor feedback