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")