#coding:utf-8
# class Point:
#     def __init__(self, a=0, b=0):
#         self.x = a
#         self.y = b
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 能回到1号点返回 Yes,否则返回 No
# @param param int整型一维数组 param[0] 为 n,param[1] 为 m
# @param edge Point类一维数组 Point.x , Point.y 分别为一条边的两个点
# @return string字符串
#
class Solution:
    def solve(self , param , edge):
        visited = set()  # 记录访问过的点
        
        # 深度优先搜索(DFS)
        def dfs(node, parent):
            if node in visited:
                return node == 1  # 如果回到 1 号点,说明形成了环

            visited.add(node)

            for e in edge:
                if e.x == node and e.y != parent:  
                    if dfs(e.y, node):  # 发现环,直接返回 True
                        return True
                elif e.y == node and e.x != parent:
                    if dfs(e.x, node):  # 发现环,直接返回 True
                        return True
            return False  # 这一轮 DFS 没找到环,返回 False
        # 先检查 1 号点是否有连接的边
        if not any(e.x == 1 or e.y == 1 for e in edge):
            return "No"

        # 从 1 号点开始 DFS
        if dfs(1, -1):
            return "Yes"
        return "No"