#include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i,n) for(int i = 0; i < n; i++) using namespace std; using namespace atcoder; using ll = long long; int main() { int n, q; cin >> n >> q; dsu uf(n); vector p(n); for (int i = 0; i < n; i++) { cin >> p[i]; p[i]--; if (p[i] >= 0) { uf.merge(i, p[i]); } } for (int i = 0; i < q; i++) { int a, b; cin >> a >> b; a--; b--; if (uf.same(a, b)) cout << "Yes" << endl; else cout << "No" << endl; } }