// Brute-force correct solution (C++)
// Works for moderate n (n up to a few thousands comfortably).
// For n up to 2e5 this will be too slow; nếu cần bản tối ưu mình sẽ viết tiếp.
#include <bits/stdc++.h>
using namespace std;
using int64 = long long;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
if(!(cin >> n)) return 0;
vector<char> c(n);
vector<int64> d(n);
for(int i=0;i<n;i++){
cin >> c[i] >> d[i];
}
// position: 0..n-1
vector<int64> T(n);
for(int i=0;i<n;i++) T[i] = 2LL * d[i]; // scale times by 2 as in analysis
vector<int64> ans(n, 0);
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(c[i] == c[j]) continue; // only opposite directions meet
int64 xi = i;
int64 xj = j;
int64 D = (xj - xi + n) % n; // clockwise distance i->j in [0..n-1]
if(D == 0) D = n; // defensive, though initial positions are distinct
int64 minT = min(T[i], T[j]);
if(minT < D) continue;
int64 meets = (minT - D) / n + 1;
ans[i] += meets;
ans[j] += meets;
}
}
for(int i=0;i<n;i++){
cout << ans[i] << '\n';
}
return 0;
}
Ly8gQnJ1dGUtZm9yY2UgY29ycmVjdCBzb2x1dGlvbiAoQysrKQovLyBXb3JrcyBmb3IgbW9kZXJhdGUgbiAobiB1cCB0byBhIGZldyB0aG91c2FuZHMgY29tZm9ydGFibHkpLgovLyBGb3IgbiB1cCB0byAyZTUgdGhpcyB3aWxsIGJlIHRvbyBzbG93OyBu4bq/dSBj4bqnbiBi4bqjbiB04buRaSDGsHUgbcOsbmggc+G6vSB2aeG6v3QgdGnhur9wLgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgaW50NjQgPSBsb25nIGxvbmc7CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGludCBuOwogICAgaWYoIShjaW4gPj4gbikpIHJldHVybiAwOwogICAgdmVjdG9yPGNoYXI+IGMobik7CiAgICB2ZWN0b3I8aW50NjQ+IGQobik7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICBjaW4gPj4gY1tpXSA+PiBkW2ldOwogICAgfQoKICAgIC8vIHBvc2l0aW9uOiAwLi5uLTEKICAgIHZlY3RvcjxpbnQ2ND4gVChuKTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspIFRbaV0gPSAyTEwgKiBkW2ldOyAvLyBzY2FsZSB0aW1lcyBieSAyIGFzIGluIGFuYWx5c2lzCgogICAgdmVjdG9yPGludDY0PiBhbnMobiwgMCk7CgogICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgZm9yKGludCBqPWkrMTtqPG47aisrKXsKICAgICAgICAgICAgaWYoY1tpXSA9PSBjW2pdKSBjb250aW51ZTsgLy8gb25seSBvcHBvc2l0ZSBkaXJlY3Rpb25zIG1lZXQKICAgICAgICAgICAgaW50NjQgeGkgPSBpOwogICAgICAgICAgICBpbnQ2NCB4aiA9IGo7CiAgICAgICAgICAgIGludDY0IEQgPSAoeGogLSB4aSArIG4pICUgbjsgLy8gY2xvY2t3aXNlIGRpc3RhbmNlIGktPmogaW4gWzAuLm4tMV0KICAgICAgICAgICAgaWYoRCA9PSAwKSBEID0gbjsgLy8gZGVmZW5zaXZlLCB0aG91Z2ggaW5pdGlhbCBwb3NpdGlvbnMgYXJlIGRpc3RpbmN0CiAgICAgICAgICAgIGludDY0IG1pblQgPSBtaW4oVFtpXSwgVFtqXSk7CiAgICAgICAgICAgIGlmKG1pblQgPCBEKSBjb250aW51ZTsKICAgICAgICAgICAgaW50NjQgbWVldHMgPSAobWluVCAtIEQpIC8gbiArIDE7CiAgICAgICAgICAgIGFuc1tpXSArPSBtZWV0czsKICAgICAgICAgICAgYW5zW2pdICs9IG1lZXRzOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICBjb3V0IDw8IGFuc1tpXSA8PCAnXG4nOwogICAgfQogICAgcmV0dXJuIDA7Cn0K