package main import . "fmt" import . "os" import bf "bufio" func main() { rd := bf.NewReader(Stdin) wr := bf.NewWriter(Stdout) defer wr.Flush() var n, q int Fscan(rd,&n,&q) p := make([]int, n+1) for i := range p[1:] { Fscan(rd, &p[i+1]) } id := 0 g := make([]int, n+n) m := make([]int, n+1) for i, e := range p[1:] { if m[i+1] > 0 { continue } id++ g[id] = id m[i+1] = id for e > 0 && m[e] == 0 { m[e] = id e = p[e] } if e > 0 { g[id] = g[m[e]] } } for ; q > 0; q-- { var a, b int Fscan(rd,&a,&b) if g[m[a]] == g[m[b]] { Fprintln(wr,"Yes") } else { Fprintln(wr,"No") } } }