#include<bits/stdc++.h>
//#include<ext/pb_ds/assoc_container.hpp>
//#include<ext/pb_ds/tree_policy.hpp>
//using namespace __gnu_pbds;
using namespace std;
typedef long long int ll ;
//typedef __int128 lll;
#define pb push_back
#define pinf 2e18
#define ninf -2e18
#define PI acos(-1.0)
#define endl "\n"
#define F first
#define S second
//template <typename T> using o_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
ll gcd (ll a,ll b) {
if(a%b==0)return b;
return gcd(b,a%b);
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//inout() ;
ll t,i,j ;
cin>>t ;
while(t--) {
string s,fs,ls;
bool ok=true;
cin>>s;
string ss=s;
reverse(s.begin(),s.end());
ll q,i;
cin>>q;
while(q--) {
ll k,l;
char c;
cin>>k;
if(k==1) {
ok=ok?false:true;
}
else {
cin>>l>>c;
if(ok) {
if(l==1) {
fs.push_back(c);
}
else {
ls.push_back(c);
}
}
else
{
if(l==2) {
fs.push_back(c);
}
else {
ls.push_back(c);
}
}
}
}
if(ok){
for(i=fs.size()-1;i>=0;i--)cout<<fs[i];
for(auto it: ss)cout<<it;
for(auto it: ls)cout<<it;
}
else
{
for(i=ls.size()-1;i>=0;i--)cout<<ls[i];
for(auto it: s)cout<<it;
for(i=0;i<fs.size();i++)cout<<fs[i];
}
cout<<'\n';
}
return 0 ;
}