#include<bits/stdc++.h>
using namespace std;
const int N = 105, inf = 0x3f3f3f3f;
typedef long long ll;
struct node {
int stop, x, y; char opt;
} a[N];
int n, tmp[N];
int hit(int x, int y, int now) {
node i = a[x], j = a[y];
if (i.opt == j.opt) {
return inf;
}
if (i.opt == 'E') {
swap(i.x, i.y); swap(j.x, j.y);
}
if (j.y <= i.y) {
return inf;
}
if (j.stop == inf) {
if (i.x < j.x - now || i.x >= j.x + j.y - i.y) {
return inf;
}
} else {
if (i.x > j.x || i.x < j.x - j.stop) {
return inf;
}
}
return now + j.y - i.y;
}
int move(int now) {
int minn = inf; memset(tmp, 0, sizeof tmp);
for (int i = 1; i <= n; ++i) {
tmp[i] = inf;
if (a[i].stop == inf) {
for (int j = 1; j <= n; ++j) {
tmp[i] = min(tmp[i], hit(i, j, now));
}
minn = min(minn, tmp[i]);
}
}
if (minn == inf) {
return inf;
}
for (int i = 1; i <= n; ++i) {
if (a[i].stop == inf) {
if (a[i].opt == 'N') {
a[i].y += (minn - now);
} else {
a[i].x += (minn - now);
}
}
if (tmp[i] == minn) {
a[i].stop = minn;
}
}
return minn;
}
int main() {
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> a[i].opt >> a[i].x >> a[i].y;
a[i].stop = inf;
}
int now = 0;
do {
now = move(now);
} while (now != inf);
for (int i = 1; i <= n; ++i) {
if (a[i].stop == inf) {
cout << "Infinity\n";
} else {
cout << a[i].stop << '\n';
}
}
return 0;
}