Xây dựng cây

View as PDF

Time limit: 1.0s , Memory limit: 256M , Points: 0 (partial)

Một đồ thị có dạng cây nếu giữa hai đỉnh bất kỳ của đồ thị đều tồn tại duy nhất một đường đi đơn giữa chúng. Khoảng cách giữa hai đỉnh của cây được định nghĩa là số cạnh nằm trên đường đi giữa hai đỉnh đó.

Cho mảng A gồm N số nguyên được đánh số từ 1 đến N. Nhiệm vụ của bạn hãy xác định xem có tồn tại ít nhất một cách xây dựng cây gồm N đỉnh thỏa mãn điều kiện sau hay không:

  • Với mỗi i (1 \le i \le N), khoảng cách lớn nhất từ đỉnh i đến một đỉnh khác của cây bằng chính xác A_i.

Input

  • Dòng đầu tiên chứa số nguyên T là số test case (1 \le T \le 100). Mỗi test case được mô tả như sau:
  • Dòng đầu tiên chứa số nguyên N (1 \le N \le 10^4).
  • Dòng thứ hai chứa N số nguyên của mảng A (0 \le A_i \le N).

Output

  • Với mỗi test case, in ra trên một dòng: "YES" nếu có tồn tại ít nhất một cách xây dựng cây thỏa mãn điều kiện đề bài, ngược lại in ra "NO".

Examples

Sample Input
2
3
2 2 2
4
2 1 2 2
Sample Output
NO
YES

Scoring

  • Subtask 1 với 50\% số điểm: N \le 5
  • Subtask 2 với 50\% số điểm: Không có ràng buộc gì thêm

Notes

Ở test case thứ hai, có thể xây dựng một cây thỏa mãn điều kiện như trong hình sau:

drawing

Comments