#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5;
struct Ant {
  int x, id;
  char w[3];
} a[N];
int n, l, ex[N], ans[N];
long long t;
bool cmp(Ant a, Ant b) { return a.x < b.x; }
int main() {
  scanf("%d%d%lld", &n, &l, &t);
  int fst = 0;
  for (int i = 1; i <= n; i++) scanf("%d%s", &a[i].x, a[i].w), a[i].id = i;
  sort(a + 1, a + 1 + n, cmp);
  for (int i = 1; i <= n; i++) {
    long long endx = a[i].x - 1;
    if (a[i].w[0] == 'R')
      endx += t;
    else
      endx -= t;
    if (endx > 0) fst += endx / l % n;
    if (endx < 0) fst += (endx + 1) / l % n - 1;
    fst = (fst % n + n) % n;
    ex[i] = (endx % l + l) % l;
  }
  sort(ex + 1, ex + 1 + n);
  for (int i = fst + 1; i <= n; i++) ans[a[i - fst].id] = ex[i] + 1;
  for (int i = 1; i <= fst; i++) ans[a[n - fst + i].id] = ex[i] + 1;
  for (int i = 1; i <= n; i++) printf("%d ", ans[i]);
  return 0;
}
