#include <cstdio>
#include<iostream>
#include<string>
#include<algorithm>
/*
* 解题思路和代码来自王道机试课
* 所有的蚂蚁分为两类 A蚂蚁和普通蚂蚁
* 1 两只运动蚂蚁发生碰撞时,由于是交换双方的速度,所以可等价双方直接互相穿越。
* 记A蚂蚁左边的但是向左走的蚂蚁为LL,A蚂蚁右边但向右走的蚂蚁为RR这两种蚂蚁不会与A蚂蚁碰撞,
* 因此不会对A蚂蚁产生任何影响。
* 记A蚂蚁的左边但向右走的蚂蚁为LR,A蚂蚁右边但向左走的蚂蚁为RL。
* A最终的方向取决于左边向右走(LR)和A右边向左走(RL)的蚂蚁的相对数量
* 2 如果只有一个普通蚂蚁和A,普通蚂蚁碰撞了静止的A导致A下落
* 那么A的下落时间等于不发生碰撞情况下普通蚂蚁的原本下落时间(这是因为普通蚂蚁碰撞A后普通蚂蚁会静止,
* 而A蚂蚁会继承普通蚂蚁的速度,沿着普通蚂蚁的方向继续前进)
* 3 记LR的数量为LRN,RL的数量为RLN
* 如果 LRN == RLN 则 A不会掉下
* 如果 LRN > RLN 则 第RLN+1个LR蚂蚁会碰撞A导致A下落,其余LR蚂蚁不和A碰撞(LR碰撞了A后,A的速度变为R,
* 剩下的LR和A蚂蚁同向,速度相同,自然不会再相撞)
* 如果 LRN < RLN 则 第LRN+1个RL蚂蚁会碰撞A导致A下落,其余RL蚂蚁不和A碰撞(与LRN>RLN的情况同理)
*/
using namespace std;
typedef struct Ant{
int pos;
int velocity;
} ;
int main(){
int n;
scanf("%d",&n);
Ant ant[100];
int Apos;
for(int i=0;i<n;i++){
scanf("%d%d",&ant[i].pos,&ant[i].velocity);
if(ant[i].velocity==0){
Apos=ant[i].pos;
}
}
int LR[100],RL[100];
int LRN=0;
int RLN=0;
for(int i=0;i<n;i++){
if(ant[i].pos<Apos&&ant[i].velocity>0){
LR[LRN++]=ant[i].pos;
}
if(ant[i].pos>Apos&&ant[i].velocity<0){
RL[RLN++]=ant[i].pos;
}
}
if(LRN==RLN){
printf("Cannot fall!\n");
return 0;
}
else{
//按照蚂蚁在木棒的位置上排序,这样再能将木棒上的位置和时间对齐,
//通过输出位置来输出时间
sort(LR,LR+LRN);
sort(RL,RL+RLN);
// 刚开始的蚂蚁分布大致如下
// LR[0] --> LR[1] --> LR[2] --> ... -> LR[LRN-1] --> A <-- RL[0] <-- RL[1] ... <-- RL[RLN-1]
if(LRN>RLN){
// LR[LRN-1]匹配RL[0] LR[LRN-2]匹配RL[1] ... LR[LRN-RLN]匹配RL[RLN-1]
// 多出的第一个LR是 LR[LRN-RLN-1] 从左往右走
printf("%d\n",100-LR[LRN-RLN-1]);//木棒长度100速度大小1cm/s,
//100-LR[LRN-RLN-1]的只就是A蚂蚁从0开始到下落所经过的时间
}
else{
// LR[LRN-1]匹配RL[0] LR[LRN-2]匹配RL[1] ... LR[0]匹配RL[LRN-1]
// 多出的第一个RL是 RL[LRN] 从右往左走
printf("%d\n",RL[LRN]);
}
}
}