#define _GLIBCXX_DEBUG #include using namespace std; using ll = long long; using Graph = vector>; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vectormac(n); vectorinfo(n); for(int i=0; i < n;i++){ int k; cin >> k; mac[i]=k; info[k-1]++; } vectorzero; vectorone; for(int i=0; i < n;i++){ if(info[i]==0) zero.push_back(i+1); if(info[i] < 2) one.push_back(i+1); } //どうやら1~nの順列ではない? int t; cin >> t; for(int i=0; i < t;i++){ //1個または2個があるか…みたいな //失敗する場合は、”そもそも存在しない” //または"かぶって2個ない"に分かれる //まず0があるかlowerboundでやる? //LについてlowerboundしてitrがRより右でYes //つぎに、1以下のマカロンの配列を作り、 //min(R,R\)> p >> q >> r >> s; //p,r,q,sの順の時がおかしくなる auto x=lower_bound(zero.begin(),zero.end(),p); auto y=lower_bound(zero.begin(),zero.end(),r); if(min(q,s) >= max(p,r)){ int a=max(p,r); int b=min(q,s); auto z=lower_bound(one.begin(),one.end(),a); if(z != one.end() and *z <= b) { cout << "No" << endl; continue; } } if(( x != zero.end() and *x <= q) or (y != zero.end() and *y <= s)) cout << "No" << endl; else cout << "Yes" << endl; } }