// Original C++ solution (slower):
#include"bits/stdc++.h"



using namespace std; 



typedef vector<int> VI;

typedef vector<VI> VVI;

typedef vector<string> VS;

typedef pair<int, int> PII;

typedef vector<PII> VPII;

typedef long long LL;

typedef priority_queue<int> PQ_DESC;

typedef priority_queue<int, vector<int>, greater<int>> PQ_ASC;

typedef priority_queue<PII> PQ_DESC_PII;

typedef priority_queue<PII, vector<PII>, greater<PII>> PQ_ASC_PII;



#define ALL(c) (c).begin(),(c).end()

#define PB push_back

#define MP make_pair

#define SORT_ASC(c) sort(ALL(c))

#define SORT_DESC(c) sort(ALL(c), greater<typeof(*((c).begin()))>())

#define SIZE(a) int((a).size())



#define FOR(i,a,b) for(int i=(a);i<(b);++i)

#define ROF(i,a,b) for(int i=(b-1);i>=(a);--i)

#define REP(i,n) FOR(i,0,n)

#define PER(i,n) ROF(i,0,n)



const double EPS = 1e-10;

const double PI  = acos(-1.0);

const int LARGE_INT = 1e9+100;

const int INF = 2e9+100;

const LL INF_LL = (LL)INF * 300 * 300;

const int MOD = 1e9+7;



//debug

#define dump(x)  cerr << #x << " = " << (x) << endl;

#define debug(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << endl;



LL modpow(LL a, LL n) {

    LL res = 1;

    while (n > 0) {

        if (n & 1) res = res * a % MOD;

        a = a * a % MOD;

        n >>= 1;

    }

    return res;

}



LL modinv(LL a) {

    LL b = MOD, u = 1, v = 0;

    while (b) {

        LL t = a / b;

        a -= t * b; swap(a, b);

        u -= t * v; swap(u, v);

    }

    u %= MOD;

    if (u < 0) u += MOD;

    return u;

}



LL moddev(LL a, LL b){

	return a * modinv(b) % MOD;

}



void Main()

{

    vector<char> s(7*100000);

    int left=3*100000;

    int right=3*100000;

    string tmp;cin>>tmp;

    REP(i,SIZE(tmp)){

        s[right]=tmp[i];

        right++;

    }

    int q;cin>>q;



    int r = 0;



    REP(i,q){

        int t;cin>>t;

        if(t==1){

            r = (r+1)%2;



        }

        else{

            int f;cin>>f;

            char c;cin>>c;



            if((r+f)%2 == 1){

                left--;

                s[left]=c;

                //s = c+s;

            }

            else{

                s[right]=c;

                right++;

                //s = s+c;

            }



        }

    }



    if(r==1){

        //reverse(s.begin(),s.end());

        ROF(i,left,right){

            cout<<s[i];

        }

        cout<<endl;

    }

    else{

        FOR(i,left,right){

            cout<<s[i];

        }

        cout<<endl;

    }



	return;

}



int main()

{

	cin.tie(nullptr);

	ios_base::sync_with_stdio(false);

	cout << fixed << setprecision(15);

	Main();

    return 0;

}

// Optimized solution to the same problem (faster):
#include"bits/stdc++.h"



using namespace std; 



typedef vector<int> VI;

typedef vector<VI> VVI;

typedef vector<string> VS;

typedef pair<int, int> PII;

typedef vector<PII> VPII;

typedef long long LL;

typedef priority_queue<int> PQ_DESC;

typedef priority_queue<int, vector<int>, greater<int>> PQ_ASC;

typedef priority_queue<PII> PQ_DESC_PII;

typedef priority_queue<PII, vector<PII>, greater<PII>> PQ_ASC_PII;



#define ALL(c) (c).begin(),(c).end()

#define PB push_back

#define MP make_pair

#define SORT_ASC(c) sort(ALL(c))

#define SORT_DESC(c) sort(ALL(c), greater<typeof(*((c).begin()))>())

#define SIZE(a) int((a).size())



#define FOR(i,a,b) for(int i=(a);i<(b);++i)

#define ROF(i,a,b) for(int i=(b-1);i>=(a);--i)

#define REP(i,n) FOR(i,0,n)

#define PER(i,n) ROF(i,0,n)



const double EPS = 1e-10;

const double PI  = acos(-1.0);

const int LARGE_INT = 1e9+100;

const int INF = 2e9+100;

const LL INF_LL = (LL)INF * 300 * 300;

const int MOD = 1e9+7;



//debug

#define dump(x)  cerr << #x << " = " << (x) << endl;

#define debug(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << endl;



LL modpow(LL a, LL n) {

    LL res = 1;

    while (n > 0) {

        if (n & 1) res = res * a % MOD;

        a = a * a % MOD;

        n >>= 1;

    }

    return res;

}



LL modinv(LL a) {

    LL b = MOD, u = 1, v = 0;

    while (b) {

        LL t = a / b;

        a -= t * b; swap(a, b);

        u -= t * v; swap(u, v);

    }

    u %= MOD;

    if (u < 0) u += MOD;

    return u;

}



LL moddev(LL a, LL b){

	return a * modinv(b) % MOD;

}



void Main()

{

    deque<char> dq;

    string s;cin>>s;

    REP(i,SIZE(s)){

        dq.push_back(s[i]);

    }



    int q;cin>>q;



    int r = 0;



    REP(i,q){

        int t;cin>>t;

        if(t==1){

            r = (r+1)%2;

        }

        else{

            int f;cin>>f;

            char c;cin>>c;



            if((r+f)%2 == 1){

                //s = c+s;

                dq.push_front(c);

            }

            else{

                //s = s+c;

                dq.push_back(c);

            }



        }

    }



    if(r==1){

        while(!dq.empty()){

            cout<<dq.back();

            dq.pop_back();

        }

        cout<<endl;

    }

    else{

        while(!dq.empty()){

            cout<<dq.front();

            dq.pop_front();

        }

        cout<<endl;

    }



	return;

}



int main()

{

	cin.tie(nullptr);

	ios_base::sync_with_stdio(false);

	cout << fixed << setprecision(15);

	Main();

    return 0;

}

// Fastest known solution for this problem: