import sys
from collections import deque

def main():
    N = int(sys.stdin.readline().strip())
    edges = [[] for _ in range(N + 1)]
    degrees = [0] * (N + 1)
    for _ in range(N - 1):
        a, b = map(int, sys.stdin.readline().split())
        edges[a].append(b)
        edges[b].append(a)
        degrees[a] += 1
        degrees[b] += 1

    leaves = [i for i in range(1, N + 1) if degrees[i] == 1]
    k = len(leaves)
    if k <= 2:
        print("Yes")
        return

    high_degree_nodes = [i for i in range(1, N + 1) if degrees[i] >= 3]
    if len(high_degree_nodes) != 1:
        print("No")
        return

    center = high_degree_nodes[0]

    # BFS to compute distances and parents
    dist = [-1] * (N + 1)
    parent = [0] * (N + 1)
    q = deque([center])
    dist[center] = 0
    while q:
        u = q.popleft()
        for v in edges[u]:
            if dist[v] == -1:
                dist[v] = dist[u] + 1
                parent[v] = u
                q.append(v)

    # Check all leaves have the same distance from center
    d = dist[leaves[0]]
    for leaf in leaves:
        if dist[leaf] != d:
            print("No")
            return

    # Check all nodes in path from leaf to center (except leaf and center) have degree 2
    for leaf in leaves:
        current = leaf
        while current != center:
            current_parent = parent[current]
            if current != leaf and degrees[current] != 2:
                print("No")
                return
            current = current_parent

    print("Yes")

if __name__ == "__main__":
    main()