##求调
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
PII k[100005];
int ans[100005];
bool cmp(PII a,PII b)
{
return a.first>b.first;
}
int main()
{
int n;
cin>>n;
int cnt_1=0,cnt_0=0;
for(int i=1;i<=n;i++)
{
int x,y;
cin>>x>>y;
k[i].first=y,k[i].second=i;
cnt_1=max(cnt_1,y);//最大黑珠数
cnt_0=max(cnt_0,x-y);//最大白珠数
}
sort(k+1,k+n+1,cmp);
cout<<cnt_1+cnt_0<<endl;
while(cnt_1--)cout<<1;
while(cnt_0--)cout<<0;
cout<<endl;
for(int i=1;i<=n;i++)ans[k[i].second]=i-1;
for(int i=1;i<=n;i++)cout<<ans[i]<<endl;
return 0;
}