#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
struct node
{
int x,y,index;
node(int x1,int y1,int index1)
{
x=x1;
y=y1;
index=index1;
}
};
bool comp(node*a,node*b)
{
if(a->x == b->x)
{
return a->y > b->y;
}
else
{
return a->x < b->x;
}
}
int main() {
int n;
cin>>n;
vector<node*> V;
for(int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
V.push_back(new node(x,y,i));
}
sort(V.begin(),V.end(),comp);
/*for(int i=0;i<n;i++)
{
cout<<"("<<V[i]->x<<","<<V[i]->y<<","<<V[i]->index<<")"<<endl;
}*/
int contains[V.size()]={0};
int contained[V.size()]={0};
int maxEnd=0;
for(int i=0;i<V.size();i++)
{
if(V[i]->y <= maxEnd)
{
contained[V[i]->index]=1;
}
maxEnd = max(maxEnd,V[i]->y);
}
int minEnd=INT_MAX;
for(int i=V.size()-1;i>=0;i--)
{
if(V[i]->y >= minEnd)
{
contains[V[i]->index]=1;
}
minEnd = min(minEnd,V[i]->y);
}
for(int i=0;i<V.size();i++)
{
cout<<contains[i]<<" ";
}
cout<<endl;
for(int i=0;i<V.size();i++)
{
cout<<contained[i]<<" ";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8Y2xpbWl0cz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBub2RlCnsKCWludCB4LHksaW5kZXg7Cglub2RlKGludCB4MSxpbnQgeTEsaW50IGluZGV4MSkKCXsKCQl4PXgxOwoJCXk9eTE7CgkJaW5kZXg9aW5kZXgxOwoJfQp9OwoKYm9vbCBjb21wKG5vZGUqYSxub2RlKmIpCnsKCWlmKGEtPnggPT0gYi0+eCkKCXsKCQlyZXR1cm4gYS0+eSA+IGItPnk7Cgl9CgllbHNlCgl7CgkJcmV0dXJuIGEtPnggPCBiLT54OwoJfQp9CgoKaW50IG1haW4oKSB7CgoJaW50IG47CgljaW4+Pm47CgkKCXZlY3Rvcjxub2RlKj4gVjsKCWZvcihpbnQgaT0wO2k8bjtpKyspCgl7CgkJaW50IHgseTsKCQljaW4+Png+Pnk7CgkJVi5wdXNoX2JhY2sobmV3IG5vZGUoeCx5LGkpKTsKCX0KCQoJc29ydChWLmJlZ2luKCksVi5lbmQoKSxjb21wKTsKCgkvKmZvcihpbnQgaT0wO2k8bjtpKyspCgl7CgkJY291dDw8IigiPDxWW2ldLT54PDwiLCI8PFZbaV0tPnk8PCIsIjw8VltpXS0+aW5kZXg8PCIpIjw8ZW5kbDsKCX0qLwoKCWludCBjb250YWluc1tWLnNpemUoKV09ezB9OwoJaW50IGNvbnRhaW5lZFtWLnNpemUoKV09ezB9OwoKCWludCBtYXhFbmQ9MDsKCWZvcihpbnQgaT0wO2k8Vi5zaXplKCk7aSsrKQoJewoJCWlmKFZbaV0tPnkgPD0gbWF4RW5kKQoJCXsKCQkJY29udGFpbmVkW1ZbaV0tPmluZGV4XT0xOwkKCQl9CgkJbWF4RW5kID0gbWF4KG1heEVuZCxWW2ldLT55KTsKCX0KCglpbnQgbWluRW5kPUlOVF9NQVg7Cglmb3IoaW50IGk9Vi5zaXplKCktMTtpPj0wO2ktLSkKCXsKCQlpZihWW2ldLT55ID49IG1pbkVuZCkKCQl7CgkJCSBjb250YWluc1tWW2ldLT5pbmRleF09MTsKCQl9CgkJbWluRW5kID0gbWluKG1pbkVuZCxWW2ldLT55KTsKCX0KCglmb3IoaW50IGk9MDtpPFYuc2l6ZSgpO2krKykKCXsKCQljb3V0PDxjb250YWluc1tpXTw8IiAiOwoJfQoJY291dDw8ZW5kbDsKCWZvcihpbnQgaT0wO2k8Vi5zaXplKCk7aSsrKQoJewoJCWNvdXQ8PGNvbnRhaW5lZFtpXTw8IiAiOwoJfQoKCXJldHVybiAwOwp9