르블랑의 트리 순회
시간 제한2초메모리 제한1024 MB
트리가 주어졌을 때, 레블랑이 두 종류의 체크포인트를 써서 모든 간선을 정확히 한 번씩 방문할 수 있는지 판정합니다.
문제
개의 정점으로 이루어진 트리가 있다. 르블랑은 이 트리를 순회하려고 한다.
임의의 정점에서 출발해 유한 번의 행동으로 모든 간선을 정확히 한 번씩 방문하는 과정을 "적절한 순회"라고 한다. 르블랑은 정점 위에 있을 때마다 다음 다섯 가지 행동 중 하나를 할 수 있다.
- 현재 정점에 인접한 간선 하나를 골라 방문하고, 간선을 따라 건너편 정점으로 이동한다.
- 트리에 노란색 체크포인트가 없을 경우, 현재 정점에 노란색 체크포인트를 생성한다.
- 트리에 노란색 체크포인트가 있을 경우, 노란색 체크포인트로 순간이동하고 노란색 체크포인트를 제거한다.
- 트리에 보라색 체크포인트가 없을 경우, 현재 정점에 보라색 체크포인트를 생성한다.
- 트리에 보라색 체크포인트가 있을 경우, 보라색 체크포인트로 순간이동하고 보라색 체크포인트를 제거한다.

위 그림들은 각각 예제 1과 예제 2의 적절한 순회 방법 중 하나이다.
처음에 트리에는 체크포인트가 없다.
르블랑이 시작 정점을 잘 고르고 최적으로 행동한다면 적절한 순회를 할 수 있는지 알아보자.
입력
첫째 줄에 정점의 개수 이 주어진다. ()
둘째 줄부터 개의 줄에 걸쳐 각 간선이 연결하는 두 정점의 번호 가 공백으로 구분되어 주어진다. ()
입력으로 주어지는 그래프는 트리이다.
출력
주어진 트리에서 르블랑이 시작 정점을 잘 고르고 최적으로 행동했을 때 적절한 순회가 가능하면 YES를, 불가능하면 NO를 출력한다.