#include<bits/stdc++.h>
using namespace std;
int n;
pair<int,int>a[1000001];
int id1[1000001],id2[1000001];
vector<int>id[1000001];
bool cmp(int x,int y){
return a[x].second<a[y].second;
}
int l[1000001],r[1000001];
bool ans[1000001];
void process(){
for(int i=1;i<1000001;i++){
if(id[i].empty())continue;
sort(id[i].begin(),id[i].end(),cmp);
l[i]=0;
ans[id[i][0]]=1;
if(!id1[a[id[i][0]].second]){
id1[a[id[i][0]].second]=i;
}
else if(!id2[a[id[i][0]].second]){
id2[a[id[i][0]].second]=i;
}
else{
int u=id2[a[id[i][0]].second];
id2[a[id[i][0]].second]=i;
while(1){
if(l[u]==r[u]){
ans[id[u][l[u]]]=0;
break;
}
bool ok=1;
if(id1[a[id[u][l[u]]].second]!=u&&id2[a[id[u][l[u]]].second]!=u){
ans[id[u][l[u]]]=0;
l[u]++;
if(id1[a[id[u][l[u]]].second]==u||id2[a[id[u][l[u]]].second]==u)ok=1;
else if(!id1[a[id[u][l[u]]].second]){
id1[a[id[u][l[u]]].second]=u;
ans[id[u][l[u]]]=1;
}
else if(!id2[a[id[u][l[u]]].second]){
id2[a[id[u][l[u]]].second]=u;
if(id1[a[id[u][l[u]]].second]>id2[a[id[u][l[u]]].second]){
swap(id1[a[id[u][l[u]]].second],id2[a[id[u][l[u]]].second]);
}
ans[id[u][l[u]]]=1;
}
else{
ok=0;
if(u<id1[a[id[u][l[u]]].second]){
ans[id[u][l[u]]]=1;
swap(u,id1[a[id[u][l[u]]].second]);
}
else if(u>id2[a[id[u][l[u]]].second]){
ans[id[u][l[u]]]=1;
swap(u,id2[a[id[u][l[u]]].second]);
}
}
}
else{
ans[id[u][r[u]]]=0;
r[u]--;
if(id1[a[id[u][r[u]]].second]==u||id2[a[id[u][r[u]]].second]==u)ok=1;
else if(!id1[a[id[u][r[u]]].second]){
id1[a[id[u][r[u]]].second]=u;
ans[id[u][r[u]]]=1;
}
else if(!id2[a[id[u][r[u]]].second]){
id2[a[id[u][r[u]]].second]=u;
if(id1[a[id[u][r[u]]].second]>id2[a[id[u][r[u]]].second]){
swap(id1[a[id[u][r[u]]].second],id2[a[id[u][r[u]]].second]);
}
ans[id[u][r[u]]]=1;
}
else{
ok=0;
if(u<id1[a[id[u][r[u]]].second]){
ans[id[u][r[u]]]=1;
swap(u,id1[a[id[u][r[u]]].second]);
}
else if(u>id2[a[id[u][r[u]]].second]){
ans[id[u][r[u]]]=1;
swap(u,id2[a[id[u][r[u]]].second]);
}
}
}
if(ok)break;
}
}
r[i]=id[i].size()-1;
if(id[i].size()==1)continue;
ans[id[i][r[i]]]=1;
if(!id1[a[id[i][r[i]]].second]){
id1[a[id[i][r[i]]].second]=i;
}
else if(!id2[a[id[i][r[i]]].second]){
id2[a[id[i][r[i]]].second]=i;
}
else{
int u=id2[a[id[i][r[i]]].second];
id2[a[id[i][r[i]]].second]=i;
while(1){
if(l[u]==r[u]){
ans[id[u][l[u]]]=0;
break;
}
bool ok=1;
if(id1[a[id[u][l[u]]].second]!=u&&id2[a[id[u][l[u]]].second]!=u){
ans[id[u][l[u]]]=0;
l[u]++;
if(id1[a[id[u][l[u]]].second]==u||id2[a[id[u][l[u]]].second]==u)ok=1;
else if(!id1[a[id[u][l[u]]].second]){
id1[a[id[u][l[u]]].second]=u;
ans[id[u][l[u]]]=1;
}
else if(!id2[a[id[u][l[u]]].second]){
id2[a[id[u][l[u]]].second]=u;
if(id1[a[id[u][l[u]]].second]>id2[a[id[u][l[u]]].second]){
swap(id1[a[id[u][l[u]]].second],id2[a[id[u][l[u]]].second]);
}
ans[id[u][l[u]]]=1;
}
else{
ok=0;
if(u<id1[a[id[u][l[u]]].second]){
ans[id[u][l[u]]]=1;
swap(u,id1[a[id[u][l[u]]].second]);
}
else if(u>id2[a[id[u][l[u]]].second]){
ans[id[u][l[u]]]=1;
swap(u,id2[a[id[u][l[u]]].second]);
}
}
}
else{
ans[id[u][r[u]]]=0;
r[u]--;
if(id1[a[id[u][r[u]]].second]==u||id2[a[id[u][r[u]]].second]==u)ok=1;
else if(!id1[a[id[u][r[u]]].second]){
id1[a[id[u][r[u]]].second]=u;
ans[id[u][r[u]]]=1;
}
else if(!id2[a[id[u][r[u]]].second]){
id2[a[id[u][r[u]]].second]=u;
if(id1[a[id[u][r[u]]].second]>id2[a[id[u][r[u]]].second]){
swap(id1[a[id[u][r[u]]].second],id2[a[id[u][r[u]]].second]);
}
ans[id[u][r[u]]]=1;
}
else{
ok=0;
if(u<id1[a[id[u][r[u]]].second]){
ans[id[u][r[u]]]=1;
swap(u,id1[a[id[u][r[u]]].second]);
}
else if(u>id2[a[id[u][r[u]]].second]){
ans[id[u][r[u]]]=1;
swap(u,id2[a[id[u][r[u]]].second]);
}
}
}
if(ok)break;
}
}
}
for(int i=1;i<=n;i++)cout<<ans[i];
}
void init(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].first>>a[i].second;
id[a[i].first].push_back(i);
}
}
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define NAME "nazunasdish"
if(fopen(NAME".inp","r")){
freopen(NAME".inp","r",stdin);
freopen(NAME".out","w",stdout);
}
// clock_t beg=clock();
init();
process();
// cerr<<double(clock()-beg)/CLOCKS_PER_SEC;
}