#include <bits/stdc++.h>
using namespace std;
// bugs存放位置i下的初始虫子速度
int bugs[120];
// lefts是在速度为0的虫子左边的向右移动的虫子下标索引数组
vector<int> lefts;
// rights是在速度为0的虫子右边的向左移动的虫子下标索引数组
vector<int> rights;
int main() {
int n, flag;
cin >> n;
int pos, speed;
for(int i=0; i<n; i++){
cin >> pos >> speed;
if(speed == 0) flag = pos;
bugs[pos] = speed;
}
int i, numLeft = 0, numRight = 0;
// 统计在速度为0的虫子左右分别有多少个向速度为0的虫子移动的虫子
for(i=1; i<=99; i++){
if(i == flag){
break;
}
if(bugs[i] == 1) {
numLeft++;
lefts.push_back(i);
}
}
for(i++; i<=99; i++){
if(bugs[i] == -1) {
numRight++;
rights.push_back(i);
}
}
// 根据分析,如果左右虫子数量相等,那么最终速度为0的虫子还是会停留在原始位置,不会掉下去
if(numLeft == numRight) cout << "Cannot fall!";
// 如果左边虫子比右边虫子多,那么最靠速度为0的虫子的多出来的那个左边的虫子,最终会和其相撞,并使它向右移动
else if(numLeft > numRight){
pos = lefts[lefts.size() - numRight - 1];
cout << 100 - pos;
}else { //右边也容易考虑
pos = rights[numLeft];
cout << pos;
}
return 0;
}