#include<stdio.h>
int p[500001],dp[500001];
int main()
{
int n,i,low,up,len,a,b,q=1,mid;
while(scanf("%d",&n)!=-1)
{
for(i=1;i<=n;i++)
{
scanf("%d%d",&a,&b);
p[a]=b;
}
dp[1]=p[1];len=1;
for(i=2;i<=n;i++)
{
low=1;
up=len;
while(low<=up)
{
mid=(low+up)/2;
if(dp[mid]>=p[i])
up=mid-1;
else
low=mid+1;
}
dp[low]=p[i];
if(low>len)
len++;
}
printf("Case %d:\n",q++);
if(len>1)
printf("My king, at most %d roads can be built.\n\n",len);
else
printf("My king, at most %d road can be built.\n\n",len);
}
return 0;
}
int p[500001],dp[500001];
int main()
{
int n,i,low,up,len,a,b,q=1,mid;
while(scanf("%d",&n)!=-1)
{
for(i=1;i<=n;i++)
{
scanf("%d%d",&a,&b);
p[a]=b;
}
dp[1]=p[1];len=1;
for(i=2;i<=n;i++)
{
low=1;
up=len;
while(low<=up)
{
mid=(low+up)/2;
if(dp[mid]>=p[i])
up=mid-1;
else
low=mid+1;
}
dp[low]=p[i];
if(low>len)
len++;
}
printf("Case %d:\n",q++);
if(len>1)
printf("My king, at most %d roads can be built.\n\n",len);
else
printf("My king, at most %d road can be built.\n\n",len);
}
return 0;
}