#include <bits/stdc++.h>
using namespace std;
#define f(i,n) for(i=0;i<n;i++)
#define pb push_back
#define mod 1000000007
#define mp make_pair
#define ff first
#define ss second
#define ll int
#define ld long double
#define gc getchar
#define pc putchar
#define sort1(a) sort(a.begin(),a.end())
#define sort2(a,n) sort(a,a+n)
#define vvl vector <vector <ll> >
#define vl vector <ll>
inline ll uscan()
{
ll n=0,c=gc();
bool check=0;
if(c=='-')check=1;
while(c<'0'||c>'9')
{
c=gc();
if(c=='-')check=1;
}
while(c<='9'&&c>='0'){
n=n*10+c-'0';
c=gc();
}
return n+(-2*check*n);
}
#define sc uscan()
void prin(vector <ll> a){
ll i;
f(i,a.size()){
cout<<a[i]<<' ';
}pc('\n');
}
void prin(vector <vector <ll> > a){
ll i,j;
f(i,a.size()){
f(j,a[i].size())
cout<<a[i][j]<<' ';
pc('\n');
}
pc('\n');
}
#define MAXNUM 200000
// #define block_size 1
#ifndef block_size
#define block_size 400
#endif
const ll number_of_blocks_half=ceil((ld)MAXNUM/(ld)block_size);
const ll number_of_blocks=number_of_blocks_half<<1;
#define thisproblemisapain(a,b,c,d,e) mp(a,mp(mp(b,c),mp(d,e)))
#define pllllll pair <ll,pair <pair <ll,ll> ,pair <ll,ll> > >
int main()
{
ll q=sc,k=sc;
ll ans=0;
vector <pllllll > maxans[number_of_blocks];
pair <ll,ll> a[number_of_blocks*block_size]={mp(-1,0)};
ll l=number_of_blocks_half*block_size;
ll r=l-1;
while(q--){
// if(q==5e4)break;
ll b=sc,C=sc;
ll c=C^ans;
if(b!=3){
ll d=sc;
ll block_num=-1;
if(b==1){
l--;
a[l].ss=d;
a[l].ff=c;
if(((l+1)%block_size)==0&&l+1!=number_of_blocks_half*block_size){
block_num=(l+1)/block_size;
}
}
else{
r++;
a[r].ss=d;
a[r].ff=c;
if(r%block_size==0&&r!=number_of_blocks_half*block_size){
block_num=(r-1)/block_size;
}
}
if(block_num!=-1){
// O(block_size^2 + block_size*log(block_size))
ll star=block_num*block_size;
ll en=star+block_size-1;
ll maxim=0,minim=INT_MAX;
for(ll ii=0;ii<(block_size*2);ii++){
maxim=max(maxim,a[star+(ii/2)].ff);
minim=min(minim,a[star+(ii/2)].ff);
ll valid_c=a[star+ii/2].ff-k;
if(ii%2)
valid_c+=(k<<1)+1;
// if(ii%3==2){
// valid_c++;
// }
ll MA=0,ML=0,MR=0;
ll ml=0,mr=0,bs=0,ma=0;
for(ll i=star;i<=en;i++){
if(a[i].ff<=valid_c+k&&a[i].ff>=valid_c-k){
bs+=a[i].ss;
if(i-star){
MA=a[i].ss+max(MA,0);
ML=ML+a[i].ss;
}
else{
MA=max(0,a[i].ss);
ML=a[i].ss;
}
}
ma=max(ma,MA);
ml=max(ml,ML);
mr=min(mr,ML);
}
mr=bs-mr;
mr=max(mr,bs);
maxans[block_num].pb(thisproblemisapain(valid_c,ml,mr,bs,ma));
}
maxans[block_num].pb(thisproblemisapain(maxim+1+k,0,0,0,0));
maxans[block_num].pb(thisproblemisapain(minim-1-k,0,0,0,0));
maxans[block_num].pb(thisproblemisapain(INT_MAX,0,0,0,0));
maxans[block_num].pb(thisproblemisapain(-INT_MAX,0,0,0,0));
sort1(maxans[block_num]);
}
}
else{
// query
ans=0;
ll dp=0;
ll cur_block=l/block_size;
ll start_block=cur_block;
ll last_block=r/block_size;
// fill dp[curblock]
ll MA1=0,ML1=0;
ll mr1=0,bs1=0;
ll star1=l,en1=block_size*(cur_block+1)-1;
// cout<<star1<<' '<<en1<<'\n';
for(ll i=star1;i<=en1;i++){
if(a[i].ff<=c+k&&a[i].ff>=c-k){
bs1+=a[i].ss;
if(i-star1){
MA1=a[i].ss+max(MA1,0);
ML1=ML1+a[i].ss;
}
else{
MA1=max(0,a[i].ss);
ML1=a[i].ss;
}
ans=max(ans,MA1);
mr1=min(mr1,ML1);
}
}
mr1=bs1-mr1;
mr1=max(mr1,bs1);
dp=mr1;
pllllll search_dummy=thisproblemisapain(c,-1,-1,-1,-1);
for(cur_block++;cur_block<last_block;cur_block++){
ll bs=-INT_MAX,mr=0,ml=0;
// search <=c
ll tem=lower_bound(maxans[cur_block].begin(),maxans[cur_block].end(),search_dummy)-maxans[cur_block].begin();
if(tem==(ll)maxans[cur_block].size()){
tem--;
}
if(maxans[cur_block][tem].ff>c&&tem){
tem--;
}
ans=max(maxans[cur_block][tem].ss.ss.ss,ans);
bs=maxans[cur_block][tem].ss.ss.ff;
mr=max(mr,maxans[cur_block][tem].ss.ff.ss);
ml=max(ml,maxans[cur_block][tem].ss.ff.ff);
ans=max(ans,ml+dp);
dp=max(bs+dp,mr);
}
ll MA2=0,ML2=0;
ll ml2=0;
ll star2=last_block*block_size,en2=r;
for(ll i=star2;i<=en2;i++){
if(a[i].ff<=c+k&&a[i].ff>=c-k){
if(i-star2){
MA2=a[i].ss+max(MA2,0);
ML2=ML2+a[i].ss;
}
else{
MA2=max(0,a[i].ss);
ML2=a[i].ss;
}
ml2=max(ml2,ML2);
ans=max(ans,MA2);
}
}
if(last_block-1>=start_block)
ans=max(ans,dp+ml2);
cout<<ans<<'\n';
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZihpLG4pIGZvcihpPTA7aTxuO2krKykKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBtb2QgMTAwMDAwMDAwNwojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIGZmIGZpcnN0CiNkZWZpbmUgc3Mgc2Vjb25kCiNkZWZpbmUgbGwgaW50CiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBnYyBnZXRjaGFyCiNkZWZpbmUgcGMgcHV0Y2hhcgojZGVmaW5lIHNvcnQxKGEpIHNvcnQoYS5iZWdpbigpLGEuZW5kKCkpCiNkZWZpbmUgc29ydDIoYSxuKSBzb3J0KGEsYStuKQojZGVmaW5lIHZ2bCB2ZWN0b3IgPHZlY3RvciA8bGw+ID4KI2RlZmluZSB2bCB2ZWN0b3IgPGxsPgppbmxpbmUgbGwgdXNjYW4oKQp7CiAgICBsbCBuPTAsYz1nYygpOwogICAgYm9vbCBjaGVjaz0wOwogICAgaWYoYz09Jy0nKWNoZWNrPTE7CiAgICB3aGlsZShjPCcwJ3x8Yz4nOScpCiAgICB7CiAgICAgICAgYz1nYygpOwogICAgICAgIGlmKGM9PSctJyljaGVjaz0xOwogICAgfQogICAgd2hpbGUoYzw9JzknJiZjPj0nMCcpewogICAgICAgIG49bioxMCtjLScwJzsKICAgICAgICBjPWdjKCk7CiAgICB9CiAgICByZXR1cm4gbisoLTIqY2hlY2sqbik7Cn0KI2RlZmluZSBzYyB1c2NhbigpCnZvaWQgcHJpbih2ZWN0b3IgPGxsPiBhKXsKICAgIGxsIGk7CiAgICBmKGksYS5zaXplKCkpewogICAgICAgIGNvdXQ8PGFbaV08PCcgJzsKICAgIH1wYygnXG4nKTsKfQp2b2lkIHByaW4odmVjdG9yIDx2ZWN0b3IgPGxsPiA+IGEpewogICAgbGwgaSxqOwogICAgZihpLGEuc2l6ZSgpKXsKICAgICAgICBmKGosYVtpXS5zaXplKCkpCiAgICAgICAgICAgIGNvdXQ8PGFbaV1bal08PCcgJzsKICAgICAgICBwYygnXG4nKTsKICAgIH0KICAgIHBjKCdcbicpOwp9CgojZGVmaW5lIE1BWE5VTSAyMDAwMDAKCi8vICNkZWZpbmUgYmxvY2tfc2l6ZSAxCgojaWZuZGVmIGJsb2NrX3NpemUKICAgICNkZWZpbmUgYmxvY2tfc2l6ZSA0MDAKI2VuZGlmCgpjb25zdCBsbCBudW1iZXJfb2ZfYmxvY2tzX2hhbGY9Y2VpbCgobGQpTUFYTlVNLyhsZClibG9ja19zaXplKTsKY29uc3QgbGwgbnVtYmVyX29mX2Jsb2Nrcz1udW1iZXJfb2ZfYmxvY2tzX2hhbGY8PDE7CgojZGVmaW5lIHRoaXNwcm9ibGVtaXNhcGFpbihhLGIsYyxkLGUpIG1wKGEsbXAobXAoYixjKSxtcChkLGUpKSkKI2RlZmluZSBwbGxsbGxsIHBhaXIgPGxsLHBhaXIgPHBhaXIgPGxsLGxsPiAscGFpciA8bGwsbGw+ID4gPgppbnQgbWFpbigpCnsKICAgIGxsIHE9c2Msaz1zYzsKCiAgICBsbCBhbnM9MDsKICAgIHZlY3RvciA8cGxsbGxsbCA+IG1heGFuc1tudW1iZXJfb2ZfYmxvY2tzXTsKICAgIHBhaXIgPGxsLGxsPiBhW251bWJlcl9vZl9ibG9ja3MqYmxvY2tfc2l6ZV09e21wKC0xLDApfTsKICAgIGxsIGw9bnVtYmVyX29mX2Jsb2Nrc19oYWxmKmJsb2NrX3NpemU7CiAgICBsbCByPWwtMTsKCiAgICB3aGlsZShxLS0pewogICAgICAgICAgIC8vIGlmKHE9PTVlNClicmVhazsKICAgICAgICBsbCBiPXNjLEM9c2M7CiAgICAgICAgbGwgYz1DXmFuczsKICAgICAgICBpZihiIT0zKXsKICAgICAgICAgICAgbGwgZD1zYzsKICAgICAgICAgICAgbGwgYmxvY2tfbnVtPS0xOwogICAgICAgICAgICBpZihiPT0xKXsKICAgICAgICAgICAgICAgIGwtLTsKICAgICAgICAgICAgICAgIGFbbF0uc3M9ZDsKICAgICAgICAgICAgICAgIGFbbF0uZmY9YzsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZigoKGwrMSklYmxvY2tfc2l6ZSk9PTAmJmwrMSE9bnVtYmVyX29mX2Jsb2Nrc19oYWxmKmJsb2NrX3NpemUpewogICAgICAgICAgICAgICAgICAgIGJsb2NrX251bT0obCsxKS9ibG9ja19zaXplOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICByKys7CiAgICAgICAgICAgICAgICBhW3JdLnNzPWQ7CiAgICAgICAgICAgICAgICBhW3JdLmZmPWM7CiAgICAgICAgICAgICAgICBpZihyJWJsb2NrX3NpemU9PTAmJnIhPW51bWJlcl9vZl9ibG9ja3NfaGFsZipibG9ja19zaXplKXsKICAgICAgICAgICAgICAgICAgICBibG9ja19udW09KHItMSkvYmxvY2tfc2l6ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZihibG9ja19udW0hPS0xKXsKICAgICAgICAgICAgICAgIC8vIE8oYmxvY2tfc2l6ZV4yICsgYmxvY2tfc2l6ZSpsb2coYmxvY2tfc2l6ZSkpCiAgICAgICAgICAgICAgICBsbCBzdGFyPWJsb2NrX251bSpibG9ja19zaXplOwogICAgICAgICAgICAgICAgbGwgZW49c3RhcitibG9ja19zaXplLTE7CiAgICAgICAgICAgICAgICBsbCBtYXhpbT0wLG1pbmltPUlOVF9NQVg7CiAgICAgICAgICAgICAgICBmb3IobGwgaWk9MDtpaTwoYmxvY2tfc2l6ZSoyKTtpaSsrKXsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBtYXhpbT1tYXgobWF4aW0sYVtzdGFyKyhpaS8yKV0uZmYpOwogICAgICAgICAgICAgICAgICAgIG1pbmltPW1pbihtaW5pbSxhW3N0YXIrKGlpLzIpXS5mZik7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgbGwgdmFsaWRfYz1hW3N0YXIraWkvMl0uZmYtazsKICAgICAgICAgICAgICAgICAgICBpZihpaSUyKQogICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9jKz0oazw8MSkrMTsKICAgICAgICAgICAgICAgICAgICAvLyBpZihpaSUzPT0yKXsKICAgICAgICAgICAgICAgICAgICAvLyAgICAgdmFsaWRfYysrOwogICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICBsbCBNQT0wLE1MPTAsTVI9MDsKICAgICAgICAgICAgICAgICAgICBsbCBtbD0wLG1yPTAsYnM9MCxtYT0wOwogICAgICAgICAgICAgICAgICAgIGZvcihsbCBpPXN0YXI7aTw9ZW47aSsrKXsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoYVtpXS5mZjw9dmFsaWRfYytrJiZhW2ldLmZmPj12YWxpZF9jLWspewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnMrPWFbaV0uc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpLXN0YXIpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BPWFbaV0uc3MrbWF4KE1BLDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1MPU1MK2FbaV0uc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BPW1heCgwLGFbaV0uc3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1MPWFbaV0uc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbWE9bWF4KG1hLE1BKTsKICAgICAgICAgICAgICAgICAgICAgICAgbWw9bWF4KG1sLE1MKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXI9bWluKG1yLE1MKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbXI9YnMtbXI7CiAgICAgICAgICAgICAgICAgICAgbXI9bWF4KG1yLGJzKTsKICAgICAgICAgICAgICAgICAgICBtYXhhbnNbYmxvY2tfbnVtXS5wYih0aGlzcHJvYmxlbWlzYXBhaW4odmFsaWRfYyxtbCxtcixicyxtYSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbWF4YW5zW2Jsb2NrX251bV0ucGIodGhpc3Byb2JsZW1pc2FwYWluKG1heGltKzEraywwLDAsMCwwKSk7CiAgICAgICAgICAgICAgICBtYXhhbnNbYmxvY2tfbnVtXS5wYih0aGlzcHJvYmxlbWlzYXBhaW4obWluaW0tMS1rLDAsMCwwLDApKTsKICAgICAgICAgICAgICAgIG1heGFuc1tibG9ja19udW1dLnBiKHRoaXNwcm9ibGVtaXNhcGFpbihJTlRfTUFYLDAsMCwwLDApKTsKICAgICAgICAgICAgICAgIG1heGFuc1tibG9ja19udW1dLnBiKHRoaXNwcm9ibGVtaXNhcGFpbigtSU5UX01BWCwwLDAsMCwwKSk7CiAgICAgICAgICAgICAgICBzb3J0MShtYXhhbnNbYmxvY2tfbnVtXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgLy8gcXVlcnkKICAgICAgICAgICAgYW5zPTA7CiAgICAgICAgICAgIGxsIGRwPTA7CiAgICAgICAgICAgIGxsIGN1cl9ibG9jaz1sL2Jsb2NrX3NpemU7CiAgICAgICAgICAgIGxsIHN0YXJ0X2Jsb2NrPWN1cl9ibG9jazsKICAgICAgICAgICAgbGwgbGFzdF9ibG9jaz1yL2Jsb2NrX3NpemU7CgogICAgICAgICAgICAvLyBmaWxsIGRwW2N1cmJsb2NrXQogICAgICAgICAgICBsbCBNQTE9MCxNTDE9MDsKICAgICAgICAgICAgbGwgbXIxPTAsYnMxPTA7CiAgICAgICAgICAgIGxsIHN0YXIxPWwsZW4xPWJsb2NrX3NpemUqKGN1cl9ibG9jaysxKS0xOwogICAgICAgICAgICAvLyBjb3V0PDxzdGFyMTw8JyAnPDxlbjE8PCdcbic7CiAgICAgICAgICAgIGZvcihsbCBpPXN0YXIxO2k8PWVuMTtpKyspewogICAgICAgICAgICAgICAgaWYoYVtpXS5mZjw9YytrJiZhW2ldLmZmPj1jLWspewogICAgICAgICAgICAgICAgICAgIGJzMSs9YVtpXS5zczsKICAgICAgICAgICAgICAgICAgICBpZihpLXN0YXIxKXsKICAgICAgICAgICAgICAgICAgICAgICAgTUExPWFbaV0uc3MrbWF4KE1BMSwwKTsKICAgICAgICAgICAgICAgICAgICAgICAgTUwxPU1MMSthW2ldLnNzOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICBNQTE9bWF4KDAsYVtpXS5zcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIE1MMT1hW2ldLnNzOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBhbnM9bWF4KGFucyxNQTEpOwogICAgICAgICAgICAgICAgICAgIG1yMT1taW4obXIxLE1MMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXIxPWJzMS1tcjE7CiAgICAgICAgICAgIG1yMT1tYXgobXIxLGJzMSk7CiAgICAgICAgICAgIGRwPW1yMTsKICAgICAgICAgICAgcGxsbGxsbCBzZWFyY2hfZHVtbXk9dGhpc3Byb2JsZW1pc2FwYWluKGMsLTEsLTEsLTEsLTEpOwogICAgICAgICAgICBmb3IoY3VyX2Jsb2NrKys7Y3VyX2Jsb2NrPGxhc3RfYmxvY2s7Y3VyX2Jsb2NrKyspewogICAgICAgICAgICAgICAgbGwgYnM9LUlOVF9NQVgsbXI9MCxtbD0wOwogICAgICAgICAgICAgICAgLy8gc2VhcmNoIDw9YwoKICAgICAgICAgICAgICAgIGxsIHRlbT1sb3dlcl9ib3VuZChtYXhhbnNbY3VyX2Jsb2NrXS5iZWdpbigpLG1heGFuc1tjdXJfYmxvY2tdLmVuZCgpLHNlYXJjaF9kdW1teSktbWF4YW5zW2N1cl9ibG9ja10uYmVnaW4oKTsKICAgICAgICAgICAgICAgIGlmKHRlbT09KGxsKW1heGFuc1tjdXJfYmxvY2tdLnNpemUoKSl7CiAgICAgICAgICAgICAgICAgICAgdGVtLS07CiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYobWF4YW5zW2N1cl9ibG9ja11bdGVtXS5mZj5jJiZ0ZW0pewogICAgICAgICAgICAgICAgICAgIHRlbS0tOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYW5zPW1heChtYXhhbnNbY3VyX2Jsb2NrXVt0ZW1dLnNzLnNzLnNzLGFucyk7CiAgICAgICAgICAgICAgICBicz1tYXhhbnNbY3VyX2Jsb2NrXVt0ZW1dLnNzLnNzLmZmOwogICAgICAgICAgICAgICAgbXI9bWF4KG1yLG1heGFuc1tjdXJfYmxvY2tdW3RlbV0uc3MuZmYuc3MpOwogICAgICAgICAgICAgICAgbWw9bWF4KG1sLG1heGFuc1tjdXJfYmxvY2tdW3RlbV0uc3MuZmYuZmYpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBhbnM9bWF4KGFucyxtbCtkcCk7CiAgICAgICAgICAgICAgICBkcD1tYXgoYnMrZHAsbXIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBsbCBNQTI9MCxNTDI9MDsKICAgICAgICAgICAgbGwgbWwyPTA7CiAgICAgICAgICAgIGxsIHN0YXIyPWxhc3RfYmxvY2sqYmxvY2tfc2l6ZSxlbjI9cjsKICAgICAgICAgICAgZm9yKGxsIGk9c3RhcjI7aTw9ZW4yO2krKyl7CiAgICAgICAgICAgICAgICBpZihhW2ldLmZmPD1jK2smJmFbaV0uZmY+PWMtayl7CiAgICAgICAgICAgICAgICAgICAgaWYoaS1zdGFyMil7CiAgICAgICAgICAgICAgICAgICAgICAgIE1BMj1hW2ldLnNzK21heChNQTIsMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIE1MMj1NTDIrYVtpXS5zczsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgTUEyPW1heCgwLGFbaV0uc3MpOwogICAgICAgICAgICAgICAgICAgICAgICBNTDI9YVtpXS5zczsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbWwyPW1heChtbDIsTUwyKTsKICAgICAgICAgICAgICAgICAgICBhbnM9bWF4KGFucyxNQTIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGxhc3RfYmxvY2stMT49c3RhcnRfYmxvY2spCiAgICAgICAgICAgICAgICBhbnM9bWF4KGFucyxkcCttbDIpOwogICAgICAgICAgICBjb3V0PDxhbnM8PCdcbic7CiAgICAgICAgfQogICAgfQogICAgCgoJcmV0dXJuIDA7Cn0=