#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
  int n;
  cin>>n;
  int x[n];
  for(int i=0;i<n;i++) scanf("%lld",x+i);
  set<int> s,u;
  for(int i=0;i<n;i++){
    if(s.count(0)){
      cout<<"No"<<endl;
      continue;
    }
    int k=x[i],c=0;
    while(s.count(k)&&!u.count(k)) k--,c++;
    if(u.count(k)){
      if((int)s.size()==(int)u.size()+c-1){
	s.insert(0);
	puts("Yes");
      }else{
	puts("No");
	for(int j=k;j<=x[i];j++) u.insert(j);
      }
      continue;
    }
    if(k==0){
      if((int)s.size()==c){
	s.insert(0);
	puts("Yes");
      }else{
	puts("No");
	for(int j=k;j<=x[i];j++) u.insert(j);
      }
      continue;
    }
    s.insert(k);
    puts("Yes");
    for(int j=x[i];j>k;j--) s.erase(j);
  }
  return 0;
}
### Prompt

Construct a cpp code solution to the problem outlined:

Example

Input

6
2
3
1
1
4
2


Output

Yes
Yes
Yes
No
Yes
No

### Response

```cpp
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
  int n;
  cin>>n;
  int x[n];
  for(int i=0;i<n;i++) scanf("%lld",x+i);
  set<int> s,u;
  for(int i=0;i<n;i++){
    if(s.count(0)){
      cout<<"No"<<endl;
      continue;
    }
    int k=x[i],c=0;
    while(s.count(k)&&!u.count(k)) k--,c++;
    if(u.count(k)){
      if((int)s.size()==(int)u.size()+c-1){
	s.insert(0);
	puts("Yes");
      }else{
	puts("No");
	for(int j=k;j<=x[i];j++) u.insert(j);
      }
      continue;
    }
    if(k==0){
      if((int)s.size()==c){
	s.insert(0);
	puts("Yes");
      }else{
	puts("No");
	for(int j=k;j<=x[i];j++) u.insert(j);
      }
      continue;
    }
    s.insert(k);
    puts("Yes");
    for(int j=x[i];j>k;j--) s.erase(j);
  }
  return 0;
}
```