#include <bits/stdc++.h>
using namespace std;

void add_list(vector<vector<int>> &S, char C, int n){
  if (C == 'a') S.at(0).push_back(n);
  else if (C == 'b') S.at(1).push_back(n);
  else if (C == 'c') S.at(2).push_back(n);
  else if (C == 'd') S.at(3).push_back(n);
  else if (C == 'e') S.at(4).push_back(n);
  else if (C == 'f') S.at(5).push_back(n);
  else if (C == 'g') S.at(6).push_back(n);
  else if (C == 'h') S.at(7).push_back(n);
  else if (C == 'i') S.at(8).push_back(n);
  else if (C == 'j') S.at(9).push_back(n);
  else if (C == 'k') S.at(10).push_back(n);
  else if (C == 'l') S.at(11).push_back(n);
  else if (C == 'm') S.at(12).push_back(n);
  else if (C == 'n') S.at(13).push_back(n);
  else if (C == 'o') S.at(14).push_back(n);
  else if (C == 'p') S.at(15).push_back(n);
  else if (C == 'q') S.at(16).push_back(n);
  else if (C == 'r') S.at(17).push_back(n);
  else if (C == 's') S.at(18).push_back(n);
  else if (C == 't') S.at(19).push_back(n);
  else if (C == 'u') S.at(20).push_back(n);
  else if (C == 'v') S.at(21).push_back(n);
  else if (C == 'w') S.at(22).push_back(n);
  else if (C == 'x') S.at(23).push_back(n);
  else if (C == 'y') S.at(24).push_back(n);
  else if (C == 'z') S.at(25).push_back(n);
}

void add_f(vector<vector<int>> &S_list, char C, int &N){
  for (int i = 0; i < 26; i++) {
    for (int j = 0; j < S_list.at(i).size(); j++){
      S_list.at(i).at(j) = S_list.at(i).at(j) + 1;
    }
  }
  add_list(S_list, C, 0);
  N++;
}

char conv(int i){
  char C;
  if (i == 0) C = 'a';
  else if (i == 1) C = 'b';
  else if (i == 2) C = 'c';
  else if (i == 3) C = 'd';
  else if (i == 4) C = 'e';
  else if (i == 5) C = 'f';
  else if (i == 6) C = 'g';
  else if (i == 7) C = 'h';
  else if (i == 8) C = 'i';
  else if (i == 9) C = 'j';
  else if (i == 10) C = 'k';
  else if (i == 11) C = 'l';
  else if (i == 12) C = 'm';
  else if (i == 13) C = 'n';
  else if (i == 14) C = 'o';
  else if (i == 15) C = 'p';
  else if (i == 16) C = 'q';
  else if (i == 17) C = 'r';
  else if (i == 18) C = 's';
  else if (i == 19) C = 't';
  else if (i == 20) C = 'u';
  else if (i == 21) C = 'v';
  else if (i == 22) C = 'w';
  else if (i == 23) C = 'x';
  else if (i == 24) C = 'y';
  else if (i == 25) C = 'z';
  
  return C;
}

int main() {
  string S;
  int Q;
  cin >> S >> Q;
  int T, F;
  char C;
  
  int N = S.size();
  vector<vector<int>> S_list(26);
  for (int i = 0; i < N; i++){
    add_list(S_list, S.at(i), i);
  }
  
  int rev = 0;
  int n_max = N - 1;
  int n_min = 0;
  for (int i = 0; i < Q; i++){
    cin >> T;
    if (T == 1){
      rev++;
    }
    if (T == 2){
      cin >> F >> C;
      if ((F + rev) % 2 == 1){
        n_min--;
        add_list(S_list, C, n_min);
      }
      else if ((F + rev) % 2 == 0){
        n_max++;
        add_list(S_list, C, n_max);
      }
    }
  }
  
  N = n_max - n_min + 1;
  string Sa(N, 'a');
  if (rev % 2 == 0){
    for (int i = 0; i < 26; i++) {
      for (int j = 0; j < S_list.at(i).size(); j++){
        Sa.at(S_list.at(i).at(j) - n_min) = conv(i);
      }
    }
  }
  else{
    for (int i = 0; i < 26; i++) {
      for (int j = 0; j < S_list.at(i).size(); j++){
        Sa.at(N - (S_list.at(i).at(j) - n_min) - 1) = conv(i);
      }
    }
  }
  
  cout << Sa << endl;
}

Measured memory_bytes: 2688