#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn = 500000+5;
int a[maxn];
int l[maxn];
int N, v;
int main() {
int num;
int Case = 0;
while(scanf("%d", &N) != EOF) {
memset(a, 0, sizeof(a));
memset(l, 0, sizeof(l));
for(int i = 1; i <= N; i++) {
scanf("%d%d", &num, &v);
a[num] = v;
} //输入数据要注意对应。。
//==============================
int len = 1;
l[1] = a[1];
for(int i = 2; i <= N; i++) {
int x = 1, y = len+1, m;
while(x < y) {
m = (x+y)>>1;
if(l[m] >= a[i]) y = m;
else x = m+1;
}
l[x] = a[i];
if(x > len) len++;
}
if(len > 1)
printf("Case %d:\nMy king, at most %d roads can be built.\n\n", ++Case, len);
else
printf("Case %d:\nMy king, at most %d road can be built.\n\n", ++Case, len);
}
return 0;
}