#include <bits/stdc++.h>
using namespace std;
struct ant {
  int id;
  int novo_id;
  long long int p;
  int dir;
};
struct rotate_edges {
  int id_ini;
  int id_fim;
};
int compara_p(ant a, ant b) {
  return a.p < b.p || (a.p == b.p && a.dir < b.dir);
}
int compara_p_reverso(ant a, ant b) { return a.p > b.p; }
int compara_id(ant a, ant b) { return a.id < b.id; }
int cont_pos, cont_neg;
long long int N, M, T;
ant v[400000];
ant v_final[400000];
ant v_pos[400000];
ant v_neg[400000];
char c;
rotate_edges calcula_rotate_edges(long long int t, int pivot) {
  long long int p_pivot = v[pivot].p;
  int cont_neg = 0;
  int cont_pos = 0;
  for (int i = 0; i < N; i++) {
    if (v[i].dir < 0) {
      v_neg[cont_neg] = v[i];
      if (v_neg[cont_neg].p < p_pivot) v_neg[cont_neg].p += M;
      cont_neg++;
    } else {
      v_pos[cont_pos] = v[i];
      if (v_pos[cont_pos].p > p_pivot) v_pos[cont_pos].p -= M;
      cont_pos++;
    }
  }
  sort(v_neg, v_neg + cont_neg, compara_p);
  sort(v_pos, v_pos + cont_pos, compara_p_reverso);
  rotate_edges resp;
  if (cont_neg == 0) {
    resp.id_ini = v_pos[0].id;
    resp.id_fim = v_pos[0].id;
  } else if (cont_pos == 0) {
    resp.id_ini = v_neg[0].id;
    resp.id_fim = v_neg[0].id;
  } else {
    resp.id_ini = v_pos[0].id;
    resp.id_fim = v_pos[0].id;
    int id_pos;
    int id_neg;
    long long int p_pos;
    long long int p_neg;
    for (int i = 0;; i++) {
      id_pos = (i + 1) / 2;
      id_neg = i / 2;
      p_pos = v_pos[id_pos % cont_pos].p - M * (id_pos / cont_pos);
      p_neg = v_neg[id_neg % cont_neg].p + M * (id_neg / cont_neg);
      if (p_neg - p_pos <= 2 * t) {
        resp.id_fim = (i % 2 == 0) ? v_neg[id_neg % cont_neg].id
                                   : v_pos[id_pos % cont_pos].id;
      } else {
        break;
      }
    }
  }
  return resp;
}
long long int calcula_delta(rotate_edges re) {
  int vi_ini, vi_fim;
  for (int i = 0; i < N; i++) {
    if (v[i].id == re.id_ini) vi_ini = i;
    if (v[i].id == re.id_fim) vi_fim = i;
  }
  return (vi_fim + N - vi_ini) % N;
}
void rotate(long long int delta) {
  for (int i = 0; i < N; i++) {
    v[i].novo_id = v[(i + N - delta) % N].id;
  }
  for (int i = 0; i < N; i++) {
    v[i].id = v[i].novo_id;
  }
}
void rotate_final(rotate_edges re) {
  int id, id_final;
  for (int i = 0; i < N; i++) {
    if (v[i].id == re.id_ini) id = i;
    if (v_final[i].id == re.id_fim) id_final = i;
  }
  for (int i = 0; i < N; i++) {
    v_final[(id_final + i) % N].id = v[(id + i) % N].id;
  }
}
int main() {
  scanf(" %lld %lld %lld", &N, &M, &T);
  for (int i = 0; i < N; i++) {
    v[i].id = i;
    scanf(" %lld %c", &v[i].p, &c);
    v[i].p = v[i].p % M;
    if (c == 'L') {
      v[i].dir = -1;
    } else {
      v[i].dir = 1;
    }
  }
  sort(v, v + N, compara_p);
  int pivot = 0;
  for (int i = 0; i < N; i++) {
    if (v[i].dir > 0 && v[(i + 1) % N].dir < 0) {
      pivot = i;
      break;
    }
  }
  long long int delta_por_ciclo = calcula_delta(calcula_rotate_edges(M, pivot));
  rotate((delta_por_ciclo * (T / M)) % N);
  T = T % M;
  rotate_edges re = calcula_rotate_edges(T, pivot);
  for (int i = 0; i < N; i++) {
    v_final[i] = v[i];
    v_final[i].p = (((v[i].p + v[i].dir * T) % M) + M) % M;
  }
  sort(v_final, v_final + N, compara_p);
  rotate_final(re);
  sort(v_final, v_final + N, compara_id);
  printf("%d", v_final[0].p == 0 ? M : v_final[0].p);
  for (int i = 1; i < N; i++) {
    printf(" %d", v_final[i].p == 0 ? M : v_final[i].p);
  }
  printf("\n");
  return 0;
}
