#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,q,st[36][400005],lz[36][400005];
string s;
void UPDATE(int i, int id, int l, int r, int u, int v, int x)
{
if (l>v || r<u) return;
else if (l>=u && r<=v)
{
st[i][id]=x*(r-l+1),lz[i][id]=x;
return;
}
int mid=(l+r)/2;
if (lz[i][id]!=-1)
{
st[i][id*2]=lz[i][id]*(mid-l+1),lz[i][id*2]=lz[i][id];
st[i][id*2+1]=lz[i][id]*(r-mid),lz[i][id*2+1]=lz[i][id],lz[i][id]=-1;
}
UPDATE(i,id*2,l,mid,u,v,x),UPDATE(i,id*2+1,mid+1,r,u,v,x);
st[i][id]=st[i][id*2]+st[i][id*2+1];
}
int GET(int i, int id, int l, int r, int u, int v)
{
if (l>v || r<u) return 0;
else if (l>=u && r<=v) return st[i][id];
int mid=(l+r)/2;
if (lz[i][id]!=-1)
{
st[i][id*2]=lz[i][id]*(mid-l+1),lz[i][id*2]=lz[i][id];
st[i][id*2+1]=lz[i][id]*(r-mid),lz[i][id*2+1]=lz[i][id],lz[i][id]=-1;
}
return GET(i,id*2,l,mid,u,v)+GET(i,id*2+1,mid+1,r,u,v);
}
signed main()
{
ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>n>>q>>s;
s="0"+s;
for (int i=1;i<=4*n;i++) for (int j='a';j<='z';j++) lz[j-96][i]=-1;
for (int i=1;i<=n;i++) UPDATE(s[i]-96,1,1,n,i,i,1);
for (int i=1;i<=q;i++)
{
int l,r,k;
cin>>l>>r>>k;
if (k==1)
{
int u=l,cnt[36];
for (int j='a';j<='z';j++) cnt[j-96]=GET(j-96,1,1,n,l,r);
for (int j='a';j<='z';j++) if (cnt[j-96]) UPDATE(j-96,1,1,n,l,r,0),UPDATE(j-96,1,1,n,u,u+cnt[j-96]-1,1),u+=cnt[j-96];
}
else
{
int u=l,cnt[36];
for (int j='z';j>='a';j--) cnt[j-96]=GET(j-96,1,1,n,l,r);
for (int j='z';j>='a';j--) if (cnt[j-96]) UPDATE(j-96,1,1,n,l,r,0),UPDATE(j-96,1,1,n,u,u+cnt[j-96]-1,1),u+=cnt[j-96];
}
}
for (int i=1;i<=n;i++) for (int j='a';j<='z';j++) if (GET(j-96,1,1,n,i,i)==1)
{
cout<<(char) j;
break;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgaW50IGxvbmcgbG9uZwp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbixxLHN0WzM2XVs0MDAwMDVdLGx6WzM2XVs0MDAwMDVdOwpzdHJpbmcgczsKdm9pZCBVUERBVEUoaW50IGksIGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYsIGludCB4KQp7CiAgICBpZiAobD52IHx8IHI8dSkgcmV0dXJuOwogICAgZWxzZSBpZiAobD49dSAmJiByPD12KQogICAgewogICAgICAgIHN0W2ldW2lkXT14KihyLWwrMSksbHpbaV1baWRdPXg7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZD0obCtyKS8yOwogICAgaWYgKGx6W2ldW2lkXSE9LTEpCiAgICB7CiAgICAgICAgc3RbaV1baWQqMl09bHpbaV1baWRdKihtaWQtbCsxKSxseltpXVtpZCoyXT1seltpXVtpZF07CiAgICAgICAgc3RbaV1baWQqMisxXT1seltpXVtpZF0qKHItbWlkKSxseltpXVtpZCoyKzFdPWx6W2ldW2lkXSxseltpXVtpZF09LTE7CiAgICB9CiAgICBVUERBVEUoaSxpZCoyLGwsbWlkLHUsdix4KSxVUERBVEUoaSxpZCoyKzEsbWlkKzEscix1LHYseCk7CiAgICBzdFtpXVtpZF09c3RbaV1baWQqMl0rc3RbaV1baWQqMisxXTsKfQppbnQgR0VUKGludCBpLCBpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHUsIGludCB2KQp7CiAgICBpZiAobD52IHx8IHI8dSkgcmV0dXJuIDA7CiAgICBlbHNlIGlmIChsPj11ICYmIHI8PXYpIHJldHVybiBzdFtpXVtpZF07CiAgICBpbnQgbWlkPShsK3IpLzI7CiAgICBpZiAobHpbaV1baWRdIT0tMSkKICAgIHsKICAgICAgICBzdFtpXVtpZCoyXT1seltpXVtpZF0qKG1pZC1sKzEpLGx6W2ldW2lkKjJdPWx6W2ldW2lkXTsKICAgICAgICBzdFtpXVtpZCoyKzFdPWx6W2ldW2lkXSooci1taWQpLGx6W2ldW2lkKjIrMV09bHpbaV1baWRdLGx6W2ldW2lkXT0tMTsKICAgIH0KICAgIHJldHVybiBHRVQoaSxpZCoyLGwsbWlkLHUsdikrR0VUKGksaWQqMisxLG1pZCsxLHIsdSx2KTsKfQpzaWduZWQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLGNpbi50aWUoMCksY291dC50aWUoMCk7CiAgICBjaW4+Pm4+PnE+PnM7CiAgICBzPSIwIitzOwogICAgZm9yIChpbnQgaT0xO2k8PTQqbjtpKyspIGZvciAoaW50IGo9J2EnO2o8PSd6JztqKyspIGx6W2otOTZdW2ldPS0xOwogICAgZm9yIChpbnQgaT0xO2k8PW47aSsrKSBVUERBVEUoc1tpXS05NiwxLDEsbixpLGksMSk7CiAgICBmb3IgKGludCBpPTE7aTw9cTtpKyspCiAgICB7CiAgICAgICAgaW50IGwscixrOwogICAgICAgIGNpbj4+bD4+cj4+azsKICAgICAgICBpZiAoaz09MSkKICAgICAgICB7CiAgICAgICAgICAgIGludCB1PWwsY250WzM2XTsKICAgICAgICAgICAgZm9yIChpbnQgaj0nYSc7ajw9J3onO2orKykgY250W2otOTZdPUdFVChqLTk2LDEsMSxuLGwscik7CiAgICAgICAgICAgIGZvciAoaW50IGo9J2EnO2o8PSd6JztqKyspIGlmIChjbnRbai05Nl0pIFVQREFURShqLTk2LDEsMSxuLGwsciwwKSxVUERBVEUoai05NiwxLDEsbix1LHUrY250W2otOTZdLTEsMSksdSs9Y250W2otOTZdOwogICAgICAgIH0KICAgICAgICBlbHNlIAogICAgICAgIHsKICAgICAgICAgICAgaW50IHU9bCxjbnRbMzZdOwogICAgICAgICAgICBmb3IgKGludCBqPSd6JztqPj0nYSc7ai0tKSBjbnRbai05Nl09R0VUKGotOTYsMSwxLG4sbCxyKTsKICAgICAgICAgICAgZm9yIChpbnQgaj0neic7aj49J2EnO2otLSkgaWYgKGNudFtqLTk2XSkgVVBEQVRFKGotOTYsMSwxLG4sbCxyLDApLFVQREFURShqLTk2LDEsMSxuLHUsdStjbnRbai05Nl0tMSwxKSx1Kz1jbnRbai05Nl07CiAgICAgICAgfQogICAgfQogICAgZm9yIChpbnQgaT0xO2k8PW47aSsrKSBmb3IgKGludCBqPSdhJztqPD0neic7aisrKSBpZiAoR0VUKGotOTYsMSwxLG4saSxpKT09MSkgCiAgICB7CiAgICAgICAgY291dDw8KGNoYXIpIGo7CiAgICAgICAgYnJlYWs7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==