n,x = map(int,input().split())
a = list(map(int,input().split()))
a = [0] + a

f = [_ for _ in range(0,n+1)]   #初始化并查集,0号元素不使用,保存每个节点的父亲根

def find(b):  					# 查找b属于哪个集合(根节点指向自己)
    if f[b] == b: 				# 若为根节点
        return b
    f[b] = find(f[b])  			# 路径压缩(将当前节点直接连接到根节点,不是合并集合,压缩深度,查找时O(1))
    return f[b]

for i in range(1,n+1):
    if i != x:  				# 起点x为集合的根节点
        f[find(a[i])] = find(i) # 合并集合,将a[i]的根节点指向i的根节点

if find(x) == find(a[x]):  		# 起点x和a[x]的根节点相同,说明x和a[x]在同一个集合中
    print("Yes")
else:
    print("No")